Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/Git?V=21
QUERY_STRINGV=21
CONTENT_TYPE
DOCUMENT_URI/revision/Git
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.130.155
REMOTE_PORT24610
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR18.223.20.57
HTTP_CF_RAY87dfc19bf8846174-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP18.223.20.57
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit Git {===none
What: GIT - Fast Distributed Version Control System (DVCS)
Where: http://git-scm.com/
       http://www.gitscm.org/
       http://ozlabs.org/~paulus/gitk/
Description: 
      Git is popular version control system designed to handle 
      very large projects with speed and efficiency; 
      it is used mainly for various open source projects, most notably the Linux kernel.
      Currently at version v1.6.5.2
Updated: 11/2009
Contact: See web site
======

It is related to Tcl/Tk because there is [gitk], a history visualization tool written in Tcl/Tk.

----

Branches in git are kind of like variables in Tcl. 
When one makes a commit, one creates a commit object, that "contains" the parent commit(s) and a directory tree specifying the current state of one's working directory, kind of like:

======
proc commit {} {
    upvar #0 $::current_branch current
    set current [list commit $::current_tree $current]
}
======

(Rather than referencing things with pointers to [Tcl_Obj]s however, things are referenced with 160-bit [sha1] hashes.) 
Deleting a branch is like unsetting a variable: if that variable held the only reference to a particular value (commit), then the commit is gone too, but if anything else held another reference (e.g., it was merged into another branch, which results in a commit with more than one parent), then the commit is still there.

Of course, since all of it is stored on disk, it would be impractical to use a refcount scheme to reclaim unused memory. Instead git has a garbage collector git-gc. Until that is run, deleted commits (and whatever) can still be accessed by giving explicit hash numbers.

----

[Zarutian] 16. july 2007: Can git be obtained or compiled into a multiplatform starkit?
Hard when one has only an thumbdrive/ipod to store stuff.

[Lars H], 2008-06-05: Since it's a Unixy collection of many programs that do one thing each, I suspect this would be tricky (can't [exec] something in a [vfs], can you?). Apparently there has been some work [http://git.or.cz/gitwiki/SoC2007Projects#head-f604c29a605c7c5fe1e993ef5aa74ce34f3fb84e] on turning it into a library, but that only got part of the way.

Makes me wonder, though… Could there be a semi-automatic way of turning a suite of C programs (like git, or at least the git plumbing) into a [load]able extension which exposes each program as a Tcl command? (I expect one would have to do things like turning static C variables into fields of some dynamically allocated struct, to ensure reentrancy, but C is not my forte.)

FWIW, I later noticed that git has a concept of '''builtin''' command, with something rather close to a Tcl_CmdProc for every built-in subcommand of git. Probably not too hard to wrap manually, provided the built-in commands don't try to exec each other.

[MAKR] 2009-02-01: I updated the URLs as the main site apparently changed recently. 
----
[RJM] 2010-10-05 added a page regarding an attempt to allow timestamp preservation of files: [git timestamps]
----

A thing that seems to be special about Git is that it tracks content (e.g. procedure definitions) rather than files (as [CVS], [SVN], and [Mercurial] does). 
See [http://wincent.com/a/about/wincent/weblog/archives/2007/07/a_look_back_bra.php].

<<categories>> Application | Category Dev. Tools} regexp2} CALL {my render Git {===none
What: GIT - Fast Distributed Version Control System (DVCS)
Where: http://git-scm.com/
       http://www.gitscm.org/
       http://ozlabs.org/~paulus/gitk/
Description: 
      Git is popular version control system designed to handle 
      very large projects with speed and efficiency; 
      it is used mainly for various open source projects, most notably the Linux kernel.
      Currently at version v1.6.5.2
Updated: 11/2009
Contact: See web site
======

It is related to Tcl/Tk because there is [gitk], a history visualization tool written in Tcl/Tk.

----

Branches in git are kind of like variables in Tcl. 
When one makes a commit, one creates a commit object, that "contains" the parent commit(s) and a directory tree specifying the current state of one's working directory, kind of like:

======
proc commit {} {
    upvar #0 $::current_branch current
    set current [list commit $::current_tree $current]
}
======

(Rather than referencing things with pointers to [Tcl_Obj]s however, things are referenced with 160-bit [sha1] hashes.) 
Deleting a branch is like unsetting a variable: if that variable held the only reference to a particular value (commit), then the commit is gone too, but if anything else held another reference (e.g., it was merged into another branch, which results in a commit with more than one parent), then the commit is still there.

Of course, since all of it is stored on disk, it would be impractical to use a refcount scheme to reclaim unused memory. Instead git has a garbage collector git-gc. Until that is run, deleted commits (and whatever) can still be accessed by giving explicit hash numbers.

----

[Zarutian] 16. july 2007: Can git be obtained or compiled into a multiplatform starkit?
Hard when one has only an thumbdrive/ipod to store stuff.

[Lars H], 2008-06-05: Since it's a Unixy collection of many programs that do one thing each, I suspect this would be tricky (can't [exec] something in a [vfs], can you?). Apparently there has been some work [http://git.or.cz/gitwiki/SoC2007Projects#head-f604c29a605c7c5fe1e993ef5aa74ce34f3fb84e] on turning it into a library, but that only got part of the way.

Makes me wonder, though… Could there be a semi-automatic way of turning a suite of C programs (like git, or at least the git plumbing) into a [load]able extension which exposes each program as a Tcl command? (I expect one would have to do things like turning static C variables into fields of some dynamically allocated struct, to ensure reentrancy, but C is not my forte.)

FWIW, I later noticed that git has a concept of '''builtin''' command, with something rather close to a Tcl_CmdProc for every built-in subcommand of git. Probably not too hard to wrap manually, provided the built-in commands don't try to exec each other.

[MAKR] 2009-02-01: I updated the URLs as the main site apparently changed recently. 
----
[RJM] 2010-10-05 added a page regarding an attempt to allow timestamp preservation of files: [git timestamps]
----

A thing that seems to be special about Git is that it tracks content (e.g. procedure definitions) rather than files (as [CVS], [SVN], and [Mercurial] does). 
See [http://wincent.com/a/about/wincent/weblog/archives/2007/07/a_look_back_bra.php].

<<categories>> Application | Category Dev. Tools}} CALL {my revision Git} CALL {::oo::Obj4775759 process revision/Git} CALL {::oo::Obj4775757 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4