From 0d12e59f636b68964c80a82a58020d34a6cd5032 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Wed, 17 Mar 2010 22:10:45 -0700 Subject: [PATCH 01/12] pull: replace unnecessary sed invocation Getting the shortened branch name is as easy as using the shell's parameter expansion. Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- git-pull.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-pull.sh b/git-pull.sh index 38331a8611..246a3a4b37 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -41,7 +41,7 @@ strategy_args= diffstat= no_commit= squash= no_ff= ff_only= log_arg= verbosity= merge_args= curr_branch=$(git symbolic-ref -q HEAD) -curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||") +curr_branch_short="${curr_branch#refs/heads/}" rebase=$(git config --bool branch.$curr_branch_short.rebase) while : do From a502ab93339adeef014e1d95cb8f2520379a8651 Mon Sep 17 00:00:00 2001 From: Brandon Casey Date: Thu, 18 Mar 2010 10:03:43 -0500 Subject: [PATCH 02/12] notes.c: remove inappropriate call to return Signed-off-by: Brandon Casey Acked-by: Johan Herland Signed-off-by: Junio C Hamano --- notes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes.c b/notes.c index a4f9926d4d..07941b7235 100644 --- a/notes.c +++ b/notes.c @@ -893,7 +893,7 @@ void remove_note(struct notes_tree *t, const unsigned char *object_sha1) assert(t->initialized); hashcpy(l.key_sha1, object_sha1); hashclr(l.val_sha1); - return note_tree_remove(t, t->root, 0, &l); + note_tree_remove(t, t->root, 0, &l); } const unsigned char *get_note(struct notes_tree *t, From c40d92e4c73b44d9cb4c3ba3a0ab53464964369c Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Fri, 19 Mar 2010 19:06:15 -0500 Subject: [PATCH 03/12] Makefile: Fix CDPATH problem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If CDPATH is set, "cd" prints its destination to stdout, causing the common (cd a && tar cf - .) | (cd b && tar xf -) idiom to fail. For example: make -C templates DESTDIR='' install make[1]: Entering directory `/users/e477610/exptool/src/git-1.7.0.2/templates' install -d -m 755 '/home/e477610/exptool/share/git-core/templates' (cd blt && gtar cf - .) | \ (cd '/home/e477610/exptool/share/git-core/templates' && umask 022 && gtar xof -) gtar: This does not look like a tar archive Most git scripts already protect against use of CDPATH through git-sh-setup, but the Makefile doesn’t. Reported-by: Michael Cox Signed-off-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 4387d4207f..98372ebbfc 100644 --- a/Makefile +++ b/Makefile @@ -317,6 +317,12 @@ SCRIPT_PYTHON = SCRIPT_SH = TEST_PROGRAMS = +# Having this variable in your environment would break pipelines because +# you cause "cd" to echo its destination to stdout. It can also take +# scripts to unexpected places. If you like CDPATH, define it for your +# interactive shell sessions without exporting it. +unexport CDPATH + SCRIPT_SH += git-am.sh SCRIPT_SH += git-bisect.sh SCRIPT_SH += git-difftool--helper.sh From a673cfede6987ee815de9189eab054fc462e5c9f Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Fri, 19 Mar 2010 22:20:12 -0500 Subject: [PATCH 04/12] Makefile: Fix occasional GIT-CFLAGS breakage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GNU make’s target-specific variables facility has one weird facet: any variables set for a given target apply to all of its dependencies, too. For example, when running “make exec_cmd.o”, since exec_cmd.o depends on GIT-CFLAGS, the variable assignment in exec_cmd.s exec_cmd.o: ALL_CFLAGS += \ '-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' \ '-DBINDIR="$(bindir_relative_SQ)"' \ '-DPREFIX="$(prefix_SQ)"' applies when refreshing GIT-CFLAGS, and the extra options get included in the tracked compiler flags. If an object file like this is the first target built, GIT-CFLAGS will appear to be out of date, resulting in useless rebuilds and the dreaded “new build flags or prefix” message. This does not happen with every build because GIT-CFLAGS is only refreshed once in a given “make” run, and usually the first target does not set any variables. When this problem does rear its head, it is very annoying. So put target-specific flags in a separate EXTRA_CPPFLAGS variable that is not included in $(TRACK_CFLAGS). Signed-off-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- Makefile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 7c616f8b0a..fc03436617 100644 --- a/Makefile +++ b/Makefile @@ -316,6 +316,7 @@ BUILTIN_OBJS = BUILT_INS = COMPAT_CFLAGS = COMPAT_OBJS = +EXTRA_CPPFLAGS = LIB_H = LIB_OBJS = PROGRAM_OBJS = @@ -1480,7 +1481,7 @@ strip: $(PROGRAMS) git$X $(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X git.o: common-cmds.h -git.s git.o: ALL_CFLAGS += -DGIT_VERSION='"$(GIT_VERSION)"' \ +git.s git.o: EXTRA_CPPFLAGS = -DGIT_VERSION='"$(GIT_VERSION)"' \ '-DGIT_HTML_PATH="$(htmldir_SQ)"' git$X: git.o $(BUILTIN_OBJS) $(GITLIBS) @@ -1488,7 +1489,7 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS) $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS) builtin/help.o: common-cmds.h -builtin/help.s builtin/help.o: ALL_CFLAGS += \ +builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \ '-DGIT_HTML_PATH="$(htmldir_SQ)"' \ '-DGIT_MAN_PATH="$(mandir_SQ)"' \ '-DGIT_INFO_PATH="$(infodir_SQ)"' @@ -1714,13 +1715,13 @@ endif ifndef CHECK_HEADER_DEPENDENCIES $(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) - $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $< + $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $< $(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs) - $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $< + $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $< endif %.s: %.c GIT-CFLAGS FORCE - $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $< + $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $< ifdef USE_COMPUTED_HEADER_DEPENDENCIES # Take advantage of gcc's on-the-fly dependency generation @@ -1760,20 +1761,20 @@ xdiff-interface.o $(XDIFF_OBJS): \ xdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h endif -exec_cmd.s exec_cmd.o: ALL_CFLAGS += \ +exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \ '-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' \ '-DBINDIR="$(bindir_relative_SQ)"' \ '-DPREFIX="$(prefix_SQ)"' -builtin/init-db.s builtin/init-db.o: ALL_CFLAGS += \ +builtin/init-db.s builtin/init-db.o: EXTRA_CPPFLAGS = \ -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' -config.s config.o: ALL_CFLAGS += -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' +config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' -http.s http.o: ALL_CFLAGS += -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' +http.s http.o: EXTRA_CPPFLAGS = -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' ifdef NO_EXPAT -http-walker.s http-walker.o: ALL_CFLAGS += -DNO_EXPAT +http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT endif git-%$X: %.o $(GITLIBS) From e9bd32351078d1f664a1608763a92ab402b255f0 Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Sat, 20 Mar 2010 04:23:58 +0200 Subject: [PATCH 05/12] daemon: parse_host_and_port SIGSEGV if port is specified This typo will lead to git-daemon dying any time the connect string includes a port after the host= attribute. This can lead for example to one of the following error messages on the client side when someone tries git clone git://...:. When the daemon is running on localhost: fatal: The remote end hung up unexpectedly or when the daemon is connected through an ssh tunnel: fatal: protocol error: bad line length character: erro In the latter case 'erro' comes from the daemon's reply: error: git-daemon died of signal 11 Signed-off-by: Imre Deak Signed-off-by: Junio C Hamano --- daemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon.c b/daemon.c index 3769b6f570..7d9e1c03e8 100644 --- a/daemon.c +++ b/daemon.c @@ -420,7 +420,7 @@ static void parse_host_and_port(char *hostport, char **host, *host = hostport; *port = strrchr(hostport, ':'); if (*port) { - *port = '\0'; + **port = '\0'; ++*port; } } From 4a45f7dd49ba9a8943ad9b11fb7bed04f0cb4f15 Mon Sep 17 00:00:00 2001 From: Brian Gernhardt Date: Sat, 20 Mar 2010 04:29:11 -0400 Subject: [PATCH 06/12] Use test_expect_success for test setups Several tests did not use test_expect_success for their setup commands. Putting these start commands into the testing framework means both that errors during setup will be caught quickly and that non-error text will be suppressed without -v. Signed-off-by: Brian Gernhardt Signed-off-by: Junio C Hamano --- t/t3020-ls-files-error-unmatch.sh | 8 +-- t/t3800-mktag.sh | 10 ++-- t/t4103-apply-binary.sh | 30 +++++------ t/t4200-rerere.sh | 64 ++++++++++++------------ t/t9501-gitweb-standalone-http-status.sh | 7 +-- 5 files changed, 64 insertions(+), 55 deletions(-) diff --git a/t/t3020-ls-files-error-unmatch.sh b/t/t3020-ls-files-error-unmatch.sh index f4066cbc09..a7d8187169 100755 --- a/t/t3020-ls-files-error-unmatch.sh +++ b/t/t3020-ls-files-error-unmatch.sh @@ -11,9 +11,11 @@ line. ' . ./test-lib.sh -touch foo bar -git update-index --add foo bar -git commit -m "add foo bar" +test_expect_success 'setup' ' + touch foo bar && + git update-index --add foo bar && + git commit -m "add foo bar" +' test_expect_success \ 'git ls-files --error-unmatch should fail with unmatched path.' \ diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh index 6fb027ba57..8eb47942e2 100755 --- a/t/t3800-mktag.sh +++ b/t/t3800-mktag.sh @@ -22,10 +22,12 @@ check_verify_failure () { ########################################################### # first create a commit, so we have a valid object/type # for the tag. -echo Hello >A -git update-index --add A -git commit -m "Initial commit" -head=$(git rev-parse --verify HEAD) +test_expect_success 'setup' ' + echo Hello >A && + git update-index --add A && + git commit -m "Initial commit" && + head=$(git rev-parse --verify HEAD) +' ############################################################ # 1. length check diff --git a/t/t4103-apply-binary.sh b/t/t4103-apply-binary.sh index ad4cc1a757..9692f16f35 100755 --- a/t/t4103-apply-binary.sh +++ b/t/t4103-apply-binary.sh @@ -20,23 +20,25 @@ EOF cat file1 >file2 cat file1 >file4 -git update-index --add --remove file1 file2 file4 -git commit -m 'Initial Version' 2>/dev/null +test_expect_success 'setup' " + git update-index --add --remove file1 file2 file4 && + git commit -m 'Initial Version' 2>/dev/null && -git checkout -b binary -perl -pe 'y/x/\000/' file3 -cat file3 >file4 -git add file2 -perl -pe 'y/\000/v/' file1 -rm -f file2 -git update-index --add --remove file1 file2 file3 file4 -git commit -m 'Second Version' + git checkout -b binary && + perl -pe 'y/x/\000/' file3 && + cat file3 >file4 && + git add file2 && + perl -pe 'y/\000/v/' file1 && + rm -f file2 && + git update-index --add --remove file1 file2 file3 file4 && + git commit -m 'Second Version' && -git diff-tree -p master binary >B.diff -git diff-tree -p -C master binary >C.diff + git diff-tree -p master binary >B.diff && + git diff-tree -p -C master binary >C.diff && -git diff-tree -p --binary master binary >BF.diff -git diff-tree -p --binary -C master binary >CF.diff + git diff-tree -p --binary master binary >BF.diff && + git diff-tree -p --binary -C master binary >CF.diff +" test_expect_success 'stat binary diff -- should not fail.' \ 'git checkout master diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index bb402c3780..70856d07ed 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -8,40 +8,42 @@ test_description='git rerere . ./test-lib.sh -cat > a1 << EOF -Some title -========== -Whether 'tis nobler in the mind to suffer -The slings and arrows of outrageous fortune, -Or to take arms against a sea of troubles, -And by opposing end them? To die: to sleep; -No more; and by a sleep to say we end -The heart-ache and the thousand natural shocks -That flesh is heir to, 'tis a consummation -Devoutly to be wish'd. -EOF +test_expect_success 'setup' " + cat > a1 <<- EOF && + Some title + ========== + Whether 'tis nobler in the mind to suffer + The slings and arrows of outrageous fortune, + Or to take arms against a sea of troubles, + And by opposing end them? To die: to sleep; + No more; and by a sleep to say we end + The heart-ache and the thousand natural shocks + That flesh is heir to, 'tis a consummation + Devoutly to be wish'd. + EOF -git add a1 -git commit -q -a -m initial + git add a1 && + git commit -q -a -m initial && -git checkout -b first -cat >> a1 << EOF -Some title -========== -To die, to sleep; -To sleep: perchance to dream: ay, there's the rub; -For in that sleep of death what dreams may come -When we have shuffled off this mortal coil, -Must give us pause: there's the respect -That makes calamity of so long life; -EOF -git commit -q -a -m first + git checkout -b first && + cat >> a1 <<- EOF && + Some title + ========== + To die, to sleep; + To sleep: perchance to dream: ay, there's the rub; + For in that sleep of death what dreams may come + When we have shuffled off this mortal coil, + Must give us pause: there's the respect + That makes calamity of so long life; + EOF + git commit -q -a -m first && -git checkout -b second master -git show first:a1 | -sed -e 's/To die, t/To die! T/' -e 's/Some title/Some Title/' > a1 -echo "* END *" >>a1 -git commit -q -a -m second + git checkout -b second master && + git show first:a1 | + sed -e 's/To die, t/To die! T/' -e 's/Some title/Some Title/' > a1 && + echo '* END *' >>a1 && + git commit -q -a -m second +" test_expect_success 'nothing recorded without rerere' ' (rm -rf .git/rr-cache; git config rerere.enabled false) && diff --git a/t/t9501-gitweb-standalone-http-status.sh b/t/t9501-gitweb-standalone-http-status.sh index d196cc5ca9..2487da1296 100755 --- a/t/t9501-gitweb-standalone-http-status.sh +++ b/t/t9501-gitweb-standalone-http-status.sh @@ -15,9 +15,10 @@ code and message.' # ---------------------------------------------------------------------- # snapshot settings -test_commit \ - 'SnapshotTests' \ - 'i can has snapshot?' +test_expect_success 'setup' " + test_commit 'SnapshotTests' 'i can has snapshot?' +" + cat >>gitweb_config.perl <<\EOF $feature{'snapshot'}{'override'} = 0; From 6a01298a7ed2c18cd68358127304024575b27cc0 Mon Sep 17 00:00:00 2001 From: Benjamin C Meyer Date: Fri, 19 Mar 2010 00:39:10 -0400 Subject: [PATCH 07/12] Fix a spelling mistake in a git-p4 console message Signed-off-by: Benjamin C Meyer Signed-off-by: Junio C Hamano --- contrib/fast-import/git-p4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4 index cd96c6f81f..c1ea643ace 100755 --- a/contrib/fast-import/git-p4 +++ b/contrib/fast-import/git-p4 @@ -802,7 +802,7 @@ class P4Submit(Command): self.oldWorkingDirectory = os.getcwd() chdir(self.clientPath) - print "Syncronizing p4 checkout..." + print "Synchronizing p4 checkout..." p4_system("sync ...") self.check() From aac1d7b88918f39b1b7c5bc0dcf831dcc9d5d8a8 Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Sat, 13 Mar 2010 18:17:04 +0100 Subject: [PATCH 08/12] fetch: Check for a "^{}" suffix with suffixcmp() Otherwise, we will check random bytes for ref names < 3 characters. Signed-off-by: Andreas Gruenbacher Signed-off-by: Junio C Hamano --- builtin-fetch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin-fetch.c b/builtin-fetch.c index b059d652c6..0acf80991b 100644 --- a/builtin-fetch.c +++ b/builtin-fetch.c @@ -588,7 +588,7 @@ static void find_non_local_tags(struct transport *transport, * to fetch then we can mark the ref entry in the list * as one to ignore by setting util to NULL. */ - if (!strcmp(ref->name + strlen(ref->name) - 3, "^{}")) { + if (!suffixcmp(ref->name, "^{}")) { if (item && !has_sha1_file(ref->old_sha1) && !will_fetch(head, ref->old_sha1) && !has_sha1_file(item->util) && From 8da61a2ab48175526390233c8bcedf63a3cdb6c4 Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Fri, 12 Mar 2010 23:27:33 +0100 Subject: [PATCH 09/12] fetch: Future-proof initialization of a refspec on stack The open-coded version to initialize each and every member will break when a new member is added to the structure. Signed-off-by: Andreas Gruenbacher Signed-off-by: Junio C Hamano --- builtin-fetch.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/builtin-fetch.c b/builtin-fetch.c index 0acf80991b..8dd1adf849 100644 --- a/builtin-fetch.c +++ b/builtin-fetch.c @@ -104,10 +104,8 @@ static void add_merge_config(struct ref **head, * there is no entry in the resulting FETCH_HEAD marked * for merging. */ + memset(&refspec, 0, sizeof(refspec)); refspec.src = branch->merge[i]->src; - refspec.dst = NULL; - refspec.pattern = 0; - refspec.force = 0; get_fetch_map(remote_refs, &refspec, tail, 1); for (rm = *old_tail; rm; rm = rm->next) rm->merge = 1; From 730b02003070400a82ff89b240573765d71e839a Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Mon, 15 Mar 2010 23:18:48 +0100 Subject: [PATCH 10/12] fetch: Fix minor memory leak A temporary struct ref is allocated in store_updated_refs() but not freed. Signed-off-by: Andreas Gruenbacher Signed-off-by: Junio C Hamano --- builtin-fetch.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin-fetch.c b/builtin-fetch.c index 8dd1adf849..bbc425b655 100644 --- a/builtin-fetch.c +++ b/builtin-fetch.c @@ -387,9 +387,10 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, fputc(url[i], fp); fputc('\n', fp); - if (ref) + if (ref) { rc |= update_local_ref(ref, what, note); - else + free(ref); + } else sprintf(note, "* %-*s %-*s -> FETCH_HEAD", SUMMARY_WIDTH, *kind ? kind : "branch", REFCOL_WIDTH, *what ? what : "HEAD"); From 8fe5d87622a4268079bf1e5738474f85d4e5c3bc Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 20 Mar 2010 11:29:13 -0700 Subject: [PATCH 11/12] Update draft release notes to 1.7.0.3 Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.0.3.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/RelNotes-1.7.0.3.txt b/Documentation/RelNotes-1.7.0.3.txt index ed936385a5..60bcbff112 100644 --- a/Documentation/RelNotes-1.7.0.3.txt +++ b/Documentation/RelNotes-1.7.0.3.txt @@ -9,6 +9,9 @@ Fixes since v1.7.0.2 * "git add -i" didn't handle a deleted path very well. + * "git blame" padded line numbers with one extra SP when the total number + of lines was one less than multiple of ten due to an off-by-one error. + * "git fetch --all/--multi" used to discard information for remotes that are fetched earlier. @@ -16,6 +19,9 @@ Fixes since v1.7.0.2 or are written by "me", instead of the ones that have "it" _and_ are written by "me". + * "git log -g branch" misbehaved when there was no entries in the reflog + for the named branch. + * "git mailinfo" (hence "git am") incorrectly removed initial indent from paragraphs. @@ -30,5 +36,5 @@ And other minor fixes and documentation updates. -- exec >/var/tmp/1 echo O=$(git describe) -O=v1.7.0.2-53-g6eb3adf +O=v1.7.0.2-69-g730b020 git shortlog --no-merges $O.. From 0d0925c5e25fad8079739be36d88faa21fc1f588 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 20 Mar 2010 11:42:34 -0700 Subject: [PATCH 12/12] Update draft release notes to 1.7.1 Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.1.txt | 36 ++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/Documentation/RelNotes-1.7.1.txt b/Documentation/RelNotes-1.7.1.txt index dfc06cb3de..06cefaf01b 100644 --- a/Documentation/RelNotes-1.7.1.txt +++ b/Documentation/RelNotes-1.7.1.txt @@ -4,22 +4,51 @@ Git v1.7.1 Release Notes (draft) Updates since v1.7.0 -------------------- + * Some commands (e.g. svn and http interfaces) that interactively ask + password can be told to use an external program given via GIT_ASKPASS. + + * Color values given to "color.." configuration can now have + more than one attributes (e.g. "bold ul"). + + * "git apply --whitespace=fix" didn't work well when an early patch in + a patch series adds trailing blank lines and a later one depended on + such a block of blank lines at the end. + + * "git am" learned "--keep-cr" option to handle inputs that are + mixture of changes to files with and without CRLF line endings. + * "git cvsimport" learned -R option to leave revision mapping between CVS revisions and resulting git commits. * "git for-each-ref" learned %(symref), %(symref:short) and %(flag) tokens. + * "git hash-object --stdin-paths" can take "--no-filters" option now. + + * "git init" can be told to look at init.templatedir configuration + variable (obviously that has to come from either /etc/gitconfig or + $HOME/.gitconfig). + * "git grep" learned "--no-index" option, to search inside contents that are not managed by git. * "git grep" learned --color=auto/always/never. - * "git hash-object --stdin-paths" can take "--no-filters" option now. + * "git grep" learned to paint filename and line-number in colors. + + * "git merge-file" learned to use custom conflict marker size and also use + the "union merge" behaviour. + + * "git notes" command has been rewritten in C and learned quite a + many commands. * "git request-pull" identifies the commit the request is relative to in a more readable way. + * "git reset" learned "--keep" option that lets you discard commits + near the tip while preserving your local changes in a way similar + to how "git checkout branch" does. + * "git svn" should work better when interacting with repositories with CRLF line endings. @@ -31,8 +60,11 @@ Fixes since v1.7.0 All of the fixes in v1.7.0.X maintenance series are included in this release, unless otherwise noted. + * "git add frotz/nitfol" did not complain when the entire frotz/ directory + was ignored. + --- exec >/var/tmp/1 echo O=$(git describe) -O=v1.7.0.2-181-gc6830a3 +O=v1.7.0.2-322-g4e7d08a git shortlog --no-merges ^maint $O..