Merge fixes up to GIT 1.1.6
authorJunio C Hamano <junkio@cox.net>
Mon, 30 Jan 2006 01:56:45 +0000 (17:56 -0800)
committerJunio C Hamano <junkio@cox.net>
Mon, 30 Jan 2006 01:56:45 +0000 (17:56 -0800)
Documentation/git-branch.txt
Documentation/git-push.txt
git-branch.sh
git-merge-recursive.py
templates/hooks--pre-commit

index d20b475..b1bc827 100644 (file)
@@ -7,7 +7,7 @@ git-branch - Create a new branch, or remove an old one.
 
 SYNOPSIS
 --------
-'git-branch' [-d | -D] [<branchname> [start-point]]
+'git-branch' [(-d | -D) <branchname>] | [[-f] <branchname> [<start-point>]]
 
 DESCRIPTION
 -----------
@@ -25,10 +25,13 @@ OPTIONS
 -D::
        Delete a branch irrespective of its index status.
 
+-f::
+       Force a reset of <branchname> to <start-point> (or current head).
+
 <branchname>::
        The name of the branch to create or delete.
 
-start-point::
+<start-point>::
        Where to create the branch; defaults to HEAD. This
        option has no meaning with -d and -D.
 
index 365cfd4..a0ef61d 100644 (file)
@@ -35,10 +35,10 @@ include::pull-fetch-param.txt[]
        line.
 
 -f, \--force::
-       Usually, the command refuses to update a local ref that is
-       not an ancestor of the remote ref used to overwrite it.
-       This flag disables the check.  What this means is that the
-       local repository can lose commits; use it with care.
+       Usually, the command refuses to update a remote ref that is
+       not a descendent of the local ref used to overwrite it.
+       This flag disables the check.  This can cause the
+       remote repository to lose commits; use it with care.
 
 
 Author
index b0e54ed..6ac961e 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-USAGE='[-d <branch>] | [[-f] <branch> [start-point]]'
+USAGE='[(-d | -D) <branchname>] | [[-f] <branchname> [<start-point>]]'
 LONG_USAGE='If no arguments, show available branches and mark current branch with a star.
 If one argument, create a new branch <branchname> based off of current HEAD.
 If two arguments, create a new branch <branchname> based off of <start-point>.'
index 56c3641..b17c8e5 100755 (executable)
@@ -205,11 +205,16 @@ def mergeFile(oPath, oSha, oMode, aPath, aSha, aMode, bPath, bSha, bMode,
             orig = runProgram(['git-unpack-file', oSha]).rstrip()
             src1 = runProgram(['git-unpack-file', aSha]).rstrip()
             src2 = runProgram(['git-unpack-file', bSha]).rstrip()
-            [out, code] = runProgram(['merge',
-                                      '-L', branch1Name + '/' + aPath,
-                                      '-L', 'orig/' + oPath,
-                                      '-L', branch2Name + '/' + bPath,
-                                      src1, orig, src2], returnCode=True)
+            try:
+                [out, code] = runProgram(['merge',
+                                          '-L', branch1Name + '/' + aPath,
+                                          '-L', 'orig/' + oPath,
+                                          '-L', branch2Name + '/' + bPath,
+                                          src1, orig, src2], returnCode=True)
+            except ProgramError, e:
+                print >>sys.stderr, e
+                die("Failed to execute 'merge'. merge(1) is used as the "
+                    "file-level merge tool. Is 'merge' in your path?")
 
             sha = runProgram(['git-hash-object', '-t', 'blob', '-w',
                               src1]).rstrip()
index 4bb6803..43d3b6e 100644 (file)
 # This is slightly modified from Andrew Morton's Perfect Patch.
 # Lines you introduce should not have trailing whitespace.
 # Also check for an indentation that has SP before a TAB.
+
+if git-rev-parse --verify HEAD 2>/dev/null
+then
+       git-diff-index -p -M --cached HEAD
+else
+       # NEEDSWORK: we should produce a diff with an empty tree here
+       # if we want to do the same verification for the initial import.
+       :
+fi |
 perl -e '
-    my $fh;
     my $found_bad = 0;
     my $filename;
     my $reported_filename = "";
@@ -31,8 +39,7 @@ perl -e '
        print STDERR "* $why (line $lineno)\n";
        print STDERR "$filename:$lineno:$line\n";
     }
-    open $fh, "-|", qw(git-diff-index -p -M --cached HEAD);
-    while (<$fh>) {
+    while (<>) {
        if (m|^diff --git a/(.*) b/\1$|) {
            $filename = $1;
            next;