summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b664550)
raw | patch | inline | side by side (parent: b664550)
author | Paul Mackerras <paulus@samba.org> | |
Wed, 17 Aug 2005 11:27:55 +0000 (21:27 +1000) | ||
committer | Paul Mackerras <paulus@samba.org> | |
Wed, 17 Aug 2005 11:27:55 +0000 (21:27 +1000) |
We read .git/info/grafts and use the information in there to
override the list of parents we get from git-rev-list or
git-cat-file.
override the list of parents we get from git-rev-list or
git-cat-file.
gitk | patch | blob | history |
index 6dc4b24f060e790d46b19f3510fee1e507057960..c443d951361a534737462d6eccdd20a9c92e95dd 100755 (executable)
--- a/gitk
+++ b/gitk
proc parsecommit {id contents listed} {
global commitinfo children nchildren parents nparents cdate ncleft
+ global grafts
set inhdr 1
set comment {}
}
set parents($id) {}
set nparents($id) 0
+ set grafted 0
+ if {[info exists grafts($id)]} {
+ set grafted 1
+ set parents($id) $grafts($id)
+ set nparents($id) [llength $grafts($id)]
+ if {$listed} {
+ foreach p $grafts($id) {
+ if {![info exists nchildren($p)]} {
+ set children($p) [list $id]
+ set nchildren($p) 1
+ set ncleft($p) 1
+ } elseif {[lsearch -exact $children($p) $id] < 0} {
+ lappend children($p) $id
+ incr nchildren($p)
+ incr ncleft($p)
+ }
+ }
+ }
+ }
foreach line [split $contents "\n"] {
if {$inhdr} {
if {$line == {}} {
set inhdr 0
} else {
set tag [lindex $line 0]
- if {$tag == "parent"} {
+ if {$tag == "parent" && !$grafted} {
set p [lindex $line 1]
if {![info exists nchildren($p)]} {
set children($p) {}
}
}
+proc readgrafts {} {
+ global grafts env
+ catch {
+ set graftfile info/grafts
+ if {[info exists env(GIT_GRAFT_FILE)]} {
+ set graftfile $env(GIT_GRAFT_FILE)
+ }
+ set fd [open [gitdir]/$graftfile r]
+ while {[gets $fd line] >= 0} {
+ if {[string match "#*" $line]} continue
+ set ok 1
+ foreach x $line {
+ if {![regexp {^[0-9a-f]{40}$} $x]} {
+ set ok 0
+ break
+ }
+ }
+ if {$ok} {
+ set id [lindex $line 0]
+ set grafts($id) [lrange $line 1 end]
+ }
+ }
+ close $fd
+ }
+}
+
proc error_popup msg {
set w .error
toplevel $w
setcoords
makewindow
readrefs
+readgrafts
getcommits $revtreeargs