1. Stefan Saasen
  2. git


Shawn O. Pearce  committed cdf6e08

git-gui: Permit merging tags into the current branch.

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>

  • Participants
  • Parent commits 54acdd9
  • Branches master

Comments (0)

Files changed (1)

File git-gui.sh

View file
 	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 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