Skip to content

Commit

Permalink
git-gui: Permit merging tags into the current branch.
Browse files Browse the repository at this point in the history
It was pointed out on the git mailing list by Martin Koegler that
we did not show tags as possible things to merge into the current
branch.  They actually are, and core Git's Grand Unified Merge
Driver will accept them just like any other commit.

So our merge dialog now requests all refs/heads, refs/remotes and
refs/tags named refs and attempts to match them against the commits
not in HEAD.  One complicating factor here is that we must use the
%(*objectname) field when talking about an annotated tag, as they
will not appear in the output of rev-list.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Shawn O. Pearce committed Feb 14, 2007
1 parent 54acdd9 commit cdf6e08
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions git-gui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2916,22 +2916,24 @@ proc do_local_merge {} {
pack $w.source -fill both -expand 1 -pady 5 -padx 5

set cmd [list git for-each-ref]
lappend cmd {--format=%(objectname) %(refname)}
lappend cmd {--format=%(objectname) %(*objectname) %(refname)}
lappend cmd refs/heads
lappend cmd refs/remotes
lappend cmd refs/tags
set fr_fd [open "| $cmd" r]
fconfigure $fr_fd -translation binary
while {[gets $fr_fd line] > 0} {
set line [split $line { }]
set sha1([lindex $line 0]) [lindex $line 1]
set sha1([lindex $line 0]) [lindex $line 2]
set sha1([lindex $line 1]) [lindex $line 2]
}
close $fr_fd

set to_show {}
set fr_fd [open "| git rev-list --all --not HEAD"]
while {[gets $fr_fd line] > 0} {
if {[catch {set ref $sha1($line)}]} continue
regsub ^refs/(heads|remotes)/ $ref {} ref
regsub ^refs/(heads|remotes|tags)/ $ref {} ref
lappend to_show $ref
}
close $fr_fd
Expand Down

0 comments on commit cdf6e08

Please sign in to comment.