SYNOPSIS
--------
-'git-branch' [-d | -D] [<branchname> [start-point]]
+'git-branch' [(-d | -D) <branchname>] | [[-f] <branchname> [<start-point>]]
DESCRIPTION
-----------
-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.
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
#!/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>.'
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()
# 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 = "";
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;