diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-07-20 04:10:13 -0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-07-21 05:00:37 -0400 |
commit | 54febd4fe62cc32b1337cd928af17a5a09624d74 (patch) | |
tree | ef5ffe14721a55768161d15b361cd752e6c149c3 /lib | |
parent | git-gui: Skip unnecessary read-tree work during checkout (diff) | |
download | tgif-54febd4fe62cc32b1337cd928af17a5a09624d74.tar.xz |
git-gui: Internally allow fetch without storing for future pull support
This is actually just an underlying code improvement that has no user
visible component yet. UI improvements to actually fetch and merge via
an arbitrary remote with no tracking branches must still follow to make
this change useful for the end-user.
Our tracking branch specifications are a Tcl list of three components:
- local tracking branch name
- remote name/url
- remote branch name/tag name
This change just makes the first element optional. If it is an empty
string we will run the fetch, but have the value be saved only into the
special .git/FETCH_HEAD, where we can pick it up and use it for this one
time operation.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/checkout_op.tcl | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/checkout_op.tcl b/lib/checkout_op.tcl index cb04d1e57e..0571115128 100644 --- a/lib/checkout_op.tcl +++ b/lib/checkout_op.tcl @@ -66,14 +66,19 @@ method run {} { set r_head [lindex $fetch_spec 2] regsub ^refs/heads/ $r_head {} r_name + set cmd [list git fetch $remote] + if {$l_trck ne {}} { + lappend cmd +$r_head:$l_trck + } else { + lappend cmd $r_head + } + _toplevel $this {Refreshing Tracking Branch} set w_cons [::console::embed \ $w.console \ "Fetching $r_name from $remote"] pack $w.console -fill both -expand 1 - $w_cons exec \ - [list git fetch $remote +$r_head:$l_trck] \ - [cb _finish_fetch] + $w_cons exec $cmd [cb _finish_fetch] bind $w <$M1B-Key-w> break bind $w <$M1B-Key-W> break @@ -114,6 +119,9 @@ method _noop {} {} method _finish_fetch {ok} { if {$ok} { set l_trck [lindex $fetch_spec 0] + if {$l_trck eq {}} { + set l_trck FETCH_HEAD + } if {[catch {set new_hash [git rev-parse --verify "$l_trck^0"]} err]} { set ok 0 $w_cons insert "fatal: Cannot resolve $l_trck" |