1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-18 06:54:55 +01:00

Merge branch 'master' into next

* master:
  Merge branch 'jc/diff'
  git-commit: make sure we protect against races.
  git-commit --amend
  show-branch --topics
  GIT-VERSION-GEN: squelch unneeded error from "cat version"
  Merge branch 'ml/cvsserver'
  annotate: resurrect raw timestamps.
  Documentation: rev-list --objects-edge
  Documentation: read-tree --aggressive
  war on whitespaces: documentation.
This commit is contained in:
Junio C Hamano 2006-03-02 21:15:26 -08:00
commit 810e300d4c
11 changed files with 134 additions and 15 deletions

View file

@ -9,7 +9,8 @@ git-am - Apply a series of patches in a mailbox
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git-am' [--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox>... 'git-am' [--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way]
[--interactive] [--whitespace=<option>] <mbox>...
'git-am' [--skip | --resolved] 'git-am' [--skip | --resolved]
DESCRIPTION DESCRIPTION
@ -46,6 +47,10 @@ OPTIONS
Skip the current patch. This is only meaningful when Skip the current patch. This is only meaningful when
restarting an aborted patch. restarting an aborted patch.
--whitespace=<option>::
This flag is passed to the `git-apply` program that applies
the patch.
--interactive:: --interactive::
Run interactively, just like git-applymbox. Run interactively, just like git-applymbox.
@ -80,7 +85,7 @@ names.
SEE ALSO SEE ALSO
-------- --------
gitlink:git-applymbox[1], gitlink:git-applypatch[1]. gitlink:git-applymbox[1], gitlink:git-applypatch[1], gitlink:git-apply[1].
Author Author

View file

@ -11,6 +11,7 @@ SYNOPSIS
[verse] [verse]
'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply] 'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
[--no-add] [--index-info] [--allow-binary-replacement] [-z] [-pNUM] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [-pNUM]
[--whitespace=<nowarn|warn|error|error-all|strip>]
[<patch>...] [<patch>...]
DESCRIPTION DESCRIPTION
@ -97,6 +98,35 @@ OPTIONS
result. This allows binary files to be patched in a result. This allows binary files to be patched in a
very limited way. very limited way.
--whitespace=<option>::
When applying a patch, detect a new or modified line
that ends with trailing whitespaces (this includes a
line that solely consists of whitespaces). By default,
the command outputs warning messages and applies the
patch.
When `git-apply` is used for statistics and not applying a
patch, it defaults to `nowarn`.
You can use different `<option>` to control this
behaviour:
+
* `nowarn` turns off the trailing whitespace warning.
* `warn` outputs warnings for a few such errors, but applies the
patch (default).
* `error` outputs warnings for a few such errors, and refuses
to apply the patch.
* `error-all` is similar to `error` but shows all errors.
* `strip` outputs warnings for a few such errors, strips out the
trailing whitespaces and applies the patch.
Configuration
-------------
apply.whitespace::
When no `--whitespace` flag is given from the command
line, this configuration item is used as the default.
Author Author
------ ------
Written by Linus Torvalds <torvalds@osdl.org> Written by Linus Torvalds <torvalds@osdl.org>

View file

@ -8,7 +8,7 @@ git-read-tree - Reads tree information into the index
SYNOPSIS SYNOPSIS
-------- --------
'git-read-tree' (<tree-ish> | [[-m | --reset] [-u | -i]] <tree-ish1> [<tree-ish2> [<tree-ish3>]]) 'git-read-tree' (<tree-ish> | [[-m [--aggressive]| --reset] [-u | -i]] <tree-ish1> [<tree-ish2> [<tree-ish3>]])
DESCRIPTION DESCRIPTION
@ -50,6 +50,19 @@ OPTIONS
trees that are not directly related to the current trees that are not directly related to the current
working tree status into a temporary index file. working tree status into a temporary index file.
--aggressive::
Usually a three-way merge by `git-read-tree` resolves
the merge for really trivial cases and leaves other
cases unresolved in the index, so that Porcelains can
implement different merge policies. This flag makes the
command to resolve a few more cases internally:
+
* when one side removes a path and the other side leaves the path
unmodified. The resolution is to remove that path.
* when both sides remove a path. The resolution is to remove that path.
* when both sides adds a path identically. The resolution
is to add that path.
<tree-ish#>:: <tree-ish#>::
The id of the tree object(s) to be read/merged. The id of the tree object(s) to be read/merged.

View file

@ -18,7 +18,7 @@ SYNOPSIS
[ \--all ] [ \--all ]
[ \--topo-order ] [ \--topo-order ]
[ \--parents ] [ \--parents ]
[ \--objects [ \--unpacked ] ] [ [\--objects | \--objects-edge] [ \--unpacked ] ]
[ \--pretty | \--header ] [ \--pretty | \--header ]
[ \--bisect ] [ \--bisect ]
<commit>... [ \-- <paths>... ] <commit>... [ \-- <paths>... ]
@ -53,6 +53,14 @@ OPTIONS
which I need to download if I have the commit object 'bar', but which I need to download if I have the commit object 'bar', but
not 'foo'". not 'foo'".
--objects-edge::
Similar to `--objects`, but also print the IDs of
excluded commits refixed with a `-` character. This is
used by `git-pack-objects` to build 'thin' pack, which
records objects in deltified form based on objects
contained in these excluded commits to reduce network
traffic.
--unpacked:: --unpacked::
Only useful with `--objects`; print the object IDs that Only useful with `--objects`; print the object IDs that
are not in packs. are not in packs.

View file

@ -7,8 +7,11 @@ DEF_VER=v1.2.GIT
# (included in release tarballs), then default # (included in release tarballs), then default
if VN=$(git-describe --abbrev=4 HEAD 2>/dev/null); then if VN=$(git-describe --abbrev=4 HEAD 2>/dev/null); then
VN=$(echo "$VN" | sed -e 's/-/./g'); VN=$(echo "$VN" | sed -e 's/-/./g');
else elif test -f version
then
VN=$(cat version) || VN="$DEF_VER" VN=$(cat version) || VN="$DEF_VER"
else
VN="$DEF_VER"
fi fi
VN=$(expr "$VN" : v*'\(.*\)') VN=$(expr "$VN" : v*'\(.*\)')

View file

@ -32,7 +32,7 @@ static int no_add = 0;
static int show_index_info = 0; static int show_index_info = 0;
static int line_termination = '\n'; static int line_termination = '\n';
static const char apply_usage[] = static const char apply_usage[] =
"git-apply [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [-pNUM] <patch>..."; "git-apply [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [-pNUM] [--whitespace=<nowarn|warn|error|error-all|strip>] <patch>...";
static enum whitespace_eol { static enum whitespace_eol {
nowarn_whitespace, nowarn_whitespace,

View file

@ -2,7 +2,8 @@
# #
# Copyright (c) 2005, 2006 Junio C Hamano # Copyright (c) 2005, 2006 Junio C Hamano
USAGE='[--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox> USAGE='[--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way]
[--interactive] [--whitespace=<option>] <mbox>...
or, when resuming [--skip | --resolved]' or, when resuming [--skip | --resolved]'
. git-sh-setup . git-sh-setup

View file

@ -15,6 +15,8 @@ ()
print STDERR 'Usage: ${\basename $0} [-s] [-S revs-file] file [ revision ] print STDERR 'Usage: ${\basename $0} [-s] [-S revs-file] file [ revision ]
-l, --long -l, --long
Show long rev (Defaults off) Show long rev (Defaults off)
-t, --time
Show raw timestamp (Defaults off)
-r, --rename -r, --rename
Follow renames (Defaults on). Follow renames (Defaults on).
-S, --rev-file revs-file -S, --rev-file revs-file
@ -26,9 +28,10 @@ ()
exit(1); exit(1);
} }
our ($help, $longrev, $rename, $starting_rev, $rev_file) = (0, 0, 1); our ($help, $longrev, $rename, $rawtime, $starting_rev, $rev_file) = (0, 0, 1);
my $rc = GetOptions( "long|l" => \$longrev, my $rc = GetOptions( "long|l" => \$longrev,
"time|t" => \$rawtime,
"help|h" => \$help, "help|h" => \$help,
"rename|r" => \$rename, "rename|r" => \$rename,
"rev-file|S=s" => \$rev_file); "rev-file|S=s" => \$rev_file);
@ -411,8 +414,10 @@ sub git_commit_info {
} }
sub format_date { sub format_date {
if ($rawtime) {
return $_[0];
}
my ($timestamp, $timezone) = split(' ', $_[0]); my ($timestamp, $timezone) = split(' ', $_[0]);
return strftime("%Y-%m-%d %H:%M:%S " . $timezone, gmtime($timestamp)); return strftime("%Y-%m-%d %H:%M:%S " . $timezone, gmtime($timestamp));
} }

View file

@ -3,7 +3,7 @@
# Copyright (c) 2005 Linus Torvalds # Copyright (c) 2005 Linus Torvalds
# Copyright (c) 2006 Junio C Hamano # Copyright (c) 2006 Junio C Hamano
USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>] [-e] [--author <author>] [[-i | -o] <path>...]' USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>) [--amend] [-e] [--author <author>] [[-i | -o] <path>...]'
SUBDIRECTORY_OK=Yes SUBDIRECTORY_OK=Yes
. git-sh-setup . git-sh-setup
@ -64,6 +64,22 @@ run_status () {
# We always show status for the whole tree. # We always show status for the whole tree.
cd "$TOP" cd "$TOP"
IS_INITIAL="$initial_commit"
REFERENCE=HEAD
case "$amend" in
t)
# If we are amending the initial commit, there
# is no HEAD^1.
if git-rev-parse --verify "HEAD^1" >/dev/null 2>&1
then
REFERENCE="HEAD^1"
IS_INITIAL=
else
IS_INITIAL=t
fi
;;
esac
# If TMP_INDEX is defined, that means we are doing # If TMP_INDEX is defined, that means we are doing
# "--only" partial commit, and that index file is used # "--only" partial commit, and that index file is used
# to build the tree for the commit. Otherwise, if # to build the tree for the commit. Otherwise, if
@ -85,10 +101,10 @@ run_status () {
*) echo "# On branch $branch" ;; *) echo "# On branch $branch" ;;
esac esac
if test -z "$initial_commit" if test -z "$IS_INITIAL"
then then
git-diff-index -M --cached --name-status \ git-diff-index -M --cached --name-status \
--diff-filter=MDTCRA HEAD | --diff-filter=MDTCRA $REFERENCE |
sed -e ' sed -e '
s/\\/\\\\/g s/\\/\\\\/g
s/ /\\ /g s/ /\\ /g
@ -147,7 +163,7 @@ run_status () {
if test -n "$verbose" if test -n "$verbose"
then then
git-diff-index --cached -M -p --diff-filter=MDTCRA HEAD git-diff-index --cached -M -p --diff-filter=MDTCRA $REFERENCE
fi fi
case "$committable" in case "$committable" in
0) 0)
@ -173,6 +189,7 @@ also=
only= only=
logfile= logfile=
use_commit= use_commit=
amend=
no_edit= no_edit=
log_given= log_given=
log_message= log_message=
@ -254,6 +271,12 @@ do
verify= verify=
shift shift
;; ;;
--a|--am|--ame|--amen|--amend)
amend=t
log_given=t$log_given
use_commit=HEAD
shift
;;
-c) -c)
case "$#" in 1) usage ;; esac case "$#" in 1) usage ;; esac
shift shift
@ -328,6 +351,15 @@ done
################################################################ ################################################################
# Sanity check options # Sanity check options
case "$amend,$initial_commit" in
t,t)
die "You do not have anything to amend." ;;
t,)
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
die "You are in the middle of a merge -- cannot amend."
fi ;;
esac
case "$log_given" in case "$log_given" in
tt*) tt*)
die "Only one of -c/-C/-F/-m can be used." ;; die "Only one of -c/-C/-F/-m can be used." ;;
@ -559,13 +591,18 @@ if test -z "$initial_commit"
then then
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
PARENTS="-p HEAD "`sed -e 's/^/-p /' "$GIT_DIR/MERGE_HEAD"` PARENTS="-p HEAD "`sed -e 's/^/-p /' "$GIT_DIR/MERGE_HEAD"`
elif test -n "$amend"; then
PARENTS=$(git-cat-file commit HEAD |
sed -n -e '/^$/q' -e 's/^parent /-p /p')
fi fi
current=$(git-rev-parse --verify HEAD)
else else
if [ -z "$(git-ls-files)" ]; then if [ -z "$(git-ls-files)" ]; then
echo >&2 Nothing to commit echo >&2 Nothing to commit
exit 1 exit 1
fi fi
PARENTS="" PARENTS=""
current=
fi fi
{ {

View file

@ -706,7 +706,7 @@ static int read_cache_unmerged(void)
return deleted; return deleted;
} }
static const char read_tree_usage[] = "git-read-tree (<sha> | -m [-u | -i] <sha1> [<sha2> [<sha3>]])"; static const char read_tree_usage[] = "git-read-tree (<sha> | -m [--aggressive] [-u | -i] <sha1> [<sha2> [<sha3>]])";
static struct cache_file cache_file; static struct cache_file cache_file;

View file

@ -5,7 +5,7 @@
#include "refs.h" #include "refs.h"
static const char show_branch_usage[] = static const char show_branch_usage[] =
"git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [<refs>...]"; "git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [--topics] [<refs>...]";
static int default_num = 0; static int default_num = 0;
static int default_alloc = 0; static int default_alloc = 0;
@ -547,6 +547,7 @@ int main(int ac, char **av)
int shown_merge_point = 0; int shown_merge_point = 0;
int with_current_branch = 0; int with_current_branch = 0;
int head_at = -1; int head_at = -1;
int topics = 0;
setup_git_directory(); setup_git_directory();
git_config(git_show_branch_config); git_config(git_show_branch_config);
@ -587,6 +588,8 @@ int main(int ac, char **av)
independent = 1; independent = 1;
else if (!strcmp(arg, "--topo-order")) else if (!strcmp(arg, "--topo-order"))
lifo = 1; lifo = 1;
else if (!strcmp(arg, "--topics"))
topics = 1;
else if (!strcmp(arg, "--date-order")) else if (!strcmp(arg, "--date-order"))
lifo = 0; lifo = 0;
else else
@ -729,6 +732,20 @@ int main(int ac, char **av)
if (1 < num_rev) { if (1 < num_rev) {
int is_merge = !!(commit->parents && commit->parents->next); int is_merge = !!(commit->parents && commit->parents->next);
if (topics) {
int interesting = 0;
for (i = 1; i < num_rev; i++) {
if ((this_flag &
(1u << (i + REV_SHIFT)))) {
interesting = 1;
break;
}
}
if (!interesting)
continue;
}
for (i = 0; i < num_rev; i++) { for (i = 0; i < num_rev; i++) {
int mark; int mark;
if (!(this_flag & (1u << (i + REV_SHIFT)))) if (!(this_flag & (1u << (i + REV_SHIFT))))