Mercurial > hg > mercurial-crew-with-dirclash
comparison contrib/hgk @ 1278:6a0d373d3126
hgit -> hgk.py
Move hgit to hgk.py
- importing hgit as an extension created compiled hgitc, which was confusing
- hgit existed to support hgk so it was slightly misnamed
- removed executable bit as we no longer run it directly
- add 'view' command so we can run hg view
- change git-* commands to debug-* so hg help won't show them
- chdir to repository root on view so hgk doesn't choke in subdirs
author | mpm@selenic.com |
---|---|
date | Mon, 19 Sep 2005 15:59:17 -0700 |
parents | cc756ffd4d04 |
children | 2073e5a71008 |
comparison
equal
deleted
inserted
replaced
1277:0bf11906df28 | 1278:6a0d373d3126 |
---|---|
32 set startmsecs [clock clicks -milliseconds] | 32 set startmsecs [clock clicks -milliseconds] |
33 set nextupdate [expr $startmsecs + 100] | 33 set nextupdate [expr $startmsecs + 100] |
34 set ncmupdate 1 | 34 set ncmupdate 1 |
35 if [catch { | 35 if [catch { |
36 set parse_args [concat --default HEAD $rargs] | 36 set parse_args [concat --default HEAD $rargs] |
37 set parsed_args [split [eval exec hg git-rev-parse $parse_args] "\n"] | 37 set parsed_args [split [eval exec hg debug-rev-parse $parse_args] "\n"] |
38 }] { | 38 }] { |
39 # if git-rev-parse failed for some reason... | 39 # if git-rev-parse failed for some reason... |
40 if {$rargs == {}} { | 40 if {$rargs == {}} { |
41 set rargs HEAD | 41 set rargs HEAD |
42 } | 42 } |
43 set parsed_args $rargs | 43 set parsed_args $rargs |
44 } | 44 } |
45 if [catch { | 45 if [catch { |
46 set commfd [open "|hg git-rev-list --header --topo-order --parents $parsed_args" r] | 46 set commfd [open "|hg debug-rev-list --header --topo-order --parents $parsed_args" r] |
47 } err] { | 47 } err] { |
48 puts stderr "Error executing hg git-rev-list: $err" | 48 puts stderr "Error executing hg debug-rev-list: $err" |
49 exit 1 | 49 exit 1 |
50 } | 50 } |
51 set leftover {} | 51 set leftover {} |
52 fconfigure $commfd -blocking 0 -translation lf | 52 fconfigure $commfd -blocking 0 -translation lf |
53 fileevent $commfd readable [list getcommitlines $commfd] | 53 fileevent $commfd readable [list getcommitlines $commfd] |
111 if {!$ok} { | 111 if {!$ok} { |
112 set shortcmit $cmit | 112 set shortcmit $cmit |
113 if {[string length $shortcmit] > 80} { | 113 if {[string length $shortcmit] > 80} { |
114 set shortcmit "[string range $shortcmit 0 80]..." | 114 set shortcmit "[string range $shortcmit 0 80]..." |
115 } | 115 } |
116 error_popup "Can't parse hg git-rev-list output: {$shortcmit}" | 116 error_popup "Can't parse hg debug-rev-list output: {$shortcmit}" |
117 exit 1 | 117 exit 1 |
118 } | 118 } |
119 set id [lindex $ids 0] | 119 set id [lindex $ids 0] |
120 set olds [lrange $ids 1 end] | 120 set olds [lrange $ids 1 end] |
121 set cmit [string range $cmit [expr {$j + 1}] end] | 121 set cmit [string range $cmit [expr {$j + 1}] end] |
162 fileevent $commfd readable [list getcommitlines $commfd] | 162 fileevent $commfd readable [list getcommitlines $commfd] |
163 } | 163 } |
164 } | 164 } |
165 | 165 |
166 proc readcommit {id} { | 166 proc readcommit {id} { |
167 if [catch {set contents [exec hg git-cat-file commit $id]}] return | 167 if [catch {set contents [exec hg debug-cat-file commit $id]}] return |
168 parsecommit $id $contents 0 {} | 168 parsecommit $id $contents 0 {} |
169 } | 169 } |
170 | 170 |
171 proc parsecommit {id contents listed olds} { | 171 proc parsecommit {id contents listed olds} { |
172 global commitinfo children nchildren parents nparents cdate ncleft | 172 global commitinfo children nchildren parents nparents cdate ncleft |
1706 } | 1706 } |
1707 append inputids $lineid($l) "\n" | 1707 append inputids $lineid($l) "\n" |
1708 } | 1708 } |
1709 | 1709 |
1710 if {[catch { | 1710 if {[catch { |
1711 set f [open [list | hg git-diff-tree --stdin -s -r -S$findstring \ | 1711 set f [open [list | hg debug-diff-tree --stdin -s -r -S$findstring \ |
1712 << $inputids] r] | 1712 << $inputids] r] |
1713 } err]} { | 1713 } err]} { |
1714 error_popup "Error starting search process: $err" | 1714 error_popup "Error starting search process: $err" |
1715 return | 1715 return |
1716 } | 1716 } |
1809 } | 1809 } |
1810 | 1810 |
1811 # start off a git-diff-tree process if needed | 1811 # start off a git-diff-tree process if needed |
1812 if {$diffsneeded ne {}} { | 1812 if {$diffsneeded ne {}} { |
1813 if {[catch { | 1813 if {[catch { |
1814 set df [open [list | hg git-diff-tree -r --stdin << $diffsneeded] r] | 1814 set df [open [list | hg debug-diff-tree -r --stdin << $diffsneeded] r] |
1815 } err ]} { | 1815 } err ]} { |
1816 error_popup "Error starting search process: $err" | 1816 error_popup "Error starting search process: $err" |
1817 return | 1817 return |
1818 } | 1818 } |
1819 catch {unset fdiffids} | 1819 catch {unset fdiffids} |
1841 if {[eof $df]} { | 1841 if {[eof $df]} { |
1842 donefilediff | 1842 donefilediff |
1843 if {[catch {close $df} err]} { | 1843 if {[catch {close $df} err]} { |
1844 stopfindproc | 1844 stopfindproc |
1845 bell | 1845 bell |
1846 error_popup "Error in hg git-diff-tree: $err" | 1846 error_popup "Error in hg debug-diff-tree: $err" |
1847 } elseif {[info exists findids]} { | 1847 } elseif {[info exists findids]} { |
1848 set ids $findids | 1848 set ids $findids |
1849 stopfindproc | 1849 stopfindproc |
1850 bell | 1850 bell |
1851 error_popup "Couldn't find diffs for {$ids}" | 1851 error_popup "Couldn't find diffs for {$ids}" |
2230 foreach id $ids { | 2230 foreach id $ids { |
2231 if {$gca eq {}} { | 2231 if {$gca eq {}} { |
2232 set gca $id | 2232 set gca $id |
2233 } else { | 2233 } else { |
2234 if {[catch { | 2234 if {[catch { |
2235 set gca [exec hg git-merge-base $gca $id] | 2235 set gca [exec hg debug-merge-base $gca $id] |
2236 } err]} { | 2236 } err]} { |
2237 return {} | 2237 return {} |
2238 } | 2238 } |
2239 } | 2239 } |
2240 } | 2240 } |
2318 catch {unset filelines} | 2318 catch {unset filelines} |
2319 catch {unset groupfilenum} | 2319 catch {unset groupfilenum} |
2320 catch {unset grouphunks} | 2320 catch {unset grouphunks} |
2321 set groupfilelast -1 | 2321 set groupfilelast -1 |
2322 foreach p $parents($diffmergeid) { | 2322 foreach p $parents($diffmergeid) { |
2323 set cmd [list | hg git-diff-tree -p $p $diffmergeid] | 2323 set cmd [list | hg debug-diff-tree -p $p $diffmergeid] |
2324 set cmd [concat $cmd $mergefilelist($diffmergeid)] | 2324 set cmd [concat $cmd $mergefilelist($diffmergeid)] |
2325 if {[catch {set f [open $cmd r]} err]} { | 2325 if {[catch {set f [open $cmd r]} err]} { |
2326 error_popup "Error getting diffs: $err" | 2326 error_popup "Error getting diffs: $err" |
2327 foreach f $flist { | 2327 foreach f $flist { |
2328 catch {close $f} | 2328 catch {close $f} |
2762 global treediff parents treepending | 2762 global treediff parents treepending |
2763 set treepending $ids | 2763 set treepending $ids |
2764 set treediff {} | 2764 set treediff {} |
2765 set id [lindex $ids 0] | 2765 set id [lindex $ids 0] |
2766 set p [lindex $ids 1] | 2766 set p [lindex $ids 1] |
2767 if [catch {set gdtf [open "|hg git-diff-tree -r $p $id" r]}] return | 2767 if [catch {set gdtf [open "|hg debug-diff-tree -r $p $id" r]}] return |
2768 fconfigure $gdtf -blocking 0 | 2768 fconfigure $gdtf -blocking 0 |
2769 fileevent $gdtf readable [list gettreediffline $gdtf $ids] | 2769 fileevent $gdtf readable [list gettreediffline $gdtf $ids] |
2770 } | 2770 } |
2771 | 2771 |
2772 proc gettreediffline {gdtf ids} { | 2772 proc gettreediffline {gdtf ids} { |
2798 global difffilestart nextupdate diffinhdr treediffs | 2798 global difffilestart nextupdate diffinhdr treediffs |
2799 | 2799 |
2800 set id [lindex $ids 0] | 2800 set id [lindex $ids 0] |
2801 set p [lindex $ids 1] | 2801 set p [lindex $ids 1] |
2802 set env(GIT_DIFF_OPTS) $diffopts | 2802 set env(GIT_DIFF_OPTS) $diffopts |
2803 set cmd [list | hg git-diff-tree -r -p -C $p $id] | 2803 set cmd [list | hg debug-diff-tree -r -p -C $p $id] |
2804 if {[catch {set bdf [open $cmd r]} err]} { | 2804 if {[catch {set bdf [open $cmd r]} err]} { |
2805 puts "error getting diffs: $err" | 2805 puts "error getting diffs: $err" |
2806 return | 2806 return |
2807 } | 2807 } |
2808 set diffinhdr 0 | 2808 set diffinhdr 0 |
3385 global patchtop | 3385 global patchtop |
3386 | 3386 |
3387 set oldid [$patchtop.fromsha1 get] | 3387 set oldid [$patchtop.fromsha1 get] |
3388 set newid [$patchtop.tosha1 get] | 3388 set newid [$patchtop.tosha1 get] |
3389 set fname [$patchtop.fname get] | 3389 set fname [$patchtop.fname get] |
3390 if {[catch {exec hg git-diff-tree -p $oldid $newid >$fname &} err]} { | 3390 if {[catch {exec hg debug-diff-tree -p $oldid $newid >$fname &} err]} { |
3391 error_popup "Error creating patch: $err" | 3391 error_popup "Error creating patch: $err" |
3392 } | 3392 } |
3393 catch {destroy $patchtop} | 3393 catch {destroy $patchtop} |
3394 unset patchtop | 3394 unset patchtop |
3395 } | 3395 } |
3606 | 3606 |
3607 # defaults... | 3607 # defaults... |
3608 set datemode 0 | 3608 set datemode 0 |
3609 set boldnames 0 | 3609 set boldnames 0 |
3610 set diffopts "-U 5 -p" | 3610 set diffopts "-U 5 -p" |
3611 set wrcomcmd "hg git-diff-tree --stdin -p --pretty" | 3611 set wrcomcmd "hg debug-diff-tree --stdin -p --pretty" |
3612 | 3612 |
3613 set mainfont {Helvetica 9} | 3613 set mainfont {Helvetica 9} |
3614 set textfont {Courier 9} | 3614 set textfont {Courier 9} |
3615 set findmergefiles 0 | 3615 set findmergefiles 0 |
3616 set gaudydiff 0 | 3616 set gaudydiff 0 |