From ea115a0d43d176f873855f9a7372376161dd8e65 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sun, 4 Mar 2012 22:14:30 +0100 Subject: submodules: always use a relative path to gitdir Since recently a submodule with name has its git directory in the .git/modules/ directory of the superproject while the work tree contains a gitfile pointing there. When the submodule git directory needs to be cloned because it is not found in .git/modules/ the clone command will write an absolute path into the gitfile. When no clone is necessary the git directory will be reactivated by the git-submodule.sh script by writing a relative path into the gitfile. This is inconsistent, as the behavior depends on the submodule having been cloned before into the .git/modules of the superproject. A relative path is preferable here because it allows the superproject to be moved around without invalidating the gitfile. We do that by always writing the relative path into the gitfile, which overwrites the absolute path the clone command may have written there. This is only the first step to make superprojects movable again like they were before the separate-git-dir approach was introduced. The second step is to use a relative path in core.worktree too. Enhance t7400 to ensure that future versions won't re-add absolute paths by accident. While at it also replace an if/else construct evaluating the presence of the 'reference' option with a single line of bash code. Reported-by: Antony Male Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano diff --git a/git-submodule.sh b/git-submodule.sh index 9bb2e13..2a93c61 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -160,18 +160,15 @@ module_clone() if test -d "$gitdir" then mkdir -p "$path" - echo "gitdir: $rel_gitdir" >"$path/.git" rm -f "$gitdir/index" else mkdir -p "$gitdir_base" - if test -n "$reference" - then - git-clone $quiet "$reference" -n "$url" "$path" --separate-git-dir "$gitdir" - else - git-clone $quiet -n "$url" "$path" --separate-git-dir "$gitdir" - fi || + git clone $quiet -n ${reference:+"$reference"} \ + --separate-git-dir "$gitdir" "$url" "$path" || die "$(eval_gettext "Clone of '\$url' into submodule path '\$path' failed")" fi + + echo "gitdir: $rel_gitdir" >"$path/.git" } # diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 695f7af..2b70b22 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -79,6 +79,8 @@ test_expect_success 'submodule add' ' cd addtest && git submodule add -q "$submodurl" submod >actual && test ! -s actual && + echo "gitdir: ../.git/modules/submod" >expect && + test_cmp expect submod/.git && git submodule init ) && -- cgit v0.10.2-6-g49f6 From d75219b4a8a9c44520ddca234cde992498383b89 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sun, 4 Mar 2012 22:15:08 +0100 Subject: submodules: always use a relative path from gitdir to work tree Since recently a submodule with name has its git directory in the .git/modules/ directory of the superproject while the work tree contains a gitfile pointing there. To make that work the git directory has the core.worktree configuration set in its config file to point back to the work tree. That core.worktree is an absolute path set by the initial clone of the submodule. A relative path is preferable here because it allows the superproject to be moved around without invalidating that setting, so compute and set that relative path after cloning or reactivating the submodule. This also fixes a bug when moving a submodule around inside the superproject, as the current code forgot to update the setting to the new submodule work tree location. Enhance t7400 to ensure that future versions won't re-add absolute paths by accident and that moving a superproject won't break submodules. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano diff --git a/git-submodule.sh b/git-submodule.sh index 2a93c61..c405caa 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -169,6 +169,24 @@ module_clone() fi echo "gitdir: $rel_gitdir" >"$path/.git" + + a=$(cd "$gitdir" && pwd)/ + b=$(cd "$path" && pwd)/ + # Remove all common leading directories after a sanity check + if test "${a#$b}" != "$a" || test "${b#$a}" != "$b"; then + die "$(eval_gettext "Gitdir '\$a' is part of the submodule path '\$b' or vice versa")" + fi + while test "${a%%/*}" = "${b%%/*}" + do + a=${a#*/} + b=${b#*/} + done + # Now chop off the trailing '/'s that were added in the beginning + a=${a%/} + b=${b%/} + + rel=$(echo $a | sed -e 's|[^/]*|..|g') + (clear_local_git_env; cd "$path" && GIT_WORK_TREE=. git config core.worktree "$rel/$b") } # diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 2b70b22..b377a7a 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -81,6 +81,13 @@ test_expect_success 'submodule add' ' test ! -s actual && echo "gitdir: ../.git/modules/submod" >expect && test_cmp expect submod/.git && + ( + cd submod && + git config core.worktree >actual && + echo "../../../submod" >expect && + test_cmp expect actual && + rm -f actual expect + ) && git submodule init ) && @@ -500,4 +507,17 @@ test_expect_success 'relative path works with user@host:path' ' ) ' +test_expect_success 'moving the superproject does not break submodules' ' + ( + cd addtest && + git submodule status >expect + ) + mv addtest addtest2 && + ( + cd addtest2 && + git submodule status >actual && + test_cmp expect actual + ) +' + test_done -- cgit v0.10.2-6-g49f6 From 69c3051780d6cacfe242563296160634dc667a90 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sun, 4 Mar 2012 22:15:36 +0100 Subject: submodules: refactor computation of relative gitdir path In module_clone() the rel_gitdir variable was computed differently when "git rev-parse --git-dir" returned a relative path than when it returned an absolute path. This is not optimal, as different code paths are used depending on the return value of that command. Fix that by reusing the differing path components computed for setting the core.worktree config setting, which leaves a single code path for setting both instead of having three and makes the code much shorter. This also fixes the bug that in the computation of how many directories have to be traversed up to hit the root directory of the submodule the name of the submodule was used where the path should have been used. This lead to problems after renaming submodules into another directory level. Even though the "(cd $somewhere && pwd)" approach breaks the flexibility of symlinks, that is no issue here as we have to have one relative path pointing from the work tree to the gitdir and another pointing back, which will never work anyway when a symlink along one of those paths is changed because the directory it points to was moved. Also add a test moving a submodule into a deeper directory to catch any future breakage here and to document what has to be done when a submodule needs to be moved until git mv learns to do that. Simply moving it to the new location doesn't work, as the core.worktree and possibly the gitfile setting too will be wrong. So it has to be removed from filesystem and index, then the new location has to be added into the index and the .gitmodules file has to be updated. After that a git submodule update will check out the submodule at the new location. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano diff --git a/git-submodule.sh b/git-submodule.sh index c405caa..a9e9822 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -132,30 +132,11 @@ module_clone() gitdir_base= name=$(module_name "$path" 2>/dev/null) test -n "$name" || name="$path" - base_path=$(dirname "$path") + base_name=$(dirname "$name") gitdir=$(git rev-parse --git-dir) - gitdir_base="$gitdir/modules/$base_path" - gitdir="$gitdir/modules/$path" - - case $gitdir in - /*) - a="$(cd_to_toplevel && pwd)/" - b=$gitdir - while [ "$b" ] && [ "${a%%/*}" = "${b%%/*}" ] - do - a=${a#*/} b=${b#*/}; - done - - rel="$a$name" - rel=`echo $rel | sed -e 's|[^/]*|..|g'` - rel_gitdir="$rel/$b" - ;; - *) - rel=`echo $name | sed -e 's|[^/]*|..|g'` - rel_gitdir="$rel/$gitdir" - ;; - esac + gitdir_base="$gitdir/modules/$base_name" + gitdir="$gitdir/modules/$name" if test -d "$gitdir" then @@ -168,8 +149,6 @@ module_clone() die "$(eval_gettext "Clone of '\$url' into submodule path '\$path' failed")" fi - echo "gitdir: $rel_gitdir" >"$path/.git" - a=$(cd "$gitdir" && pwd)/ b=$(cd "$path" && pwd)/ # Remove all common leading directories after a sanity check @@ -185,6 +164,9 @@ module_clone() a=${a%/} b=${b%/} + rel=$(echo $b | sed -e 's|[^/]*|..|g') + echo "gitdir: $rel/$a" >"$path/.git" + rel=$(echo $a | sed -e 's|[^/]*|..|g') (clear_local_git_env; cd "$path" && GIT_WORK_TREE=. git config core.worktree "$rel/$b") } diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh index 5b97222..dcb195b 100755 --- a/t/t7406-submodule-update.sh +++ b/t/t7406-submodule-update.sh @@ -619,4 +619,21 @@ test_expect_success 'submodule add properly re-creates deeper level submodules' ) ' +test_expect_success 'submodule update properly revives a moved submodule' ' + (cd super && + git commit -am "pre move" && + git status >expect&& + H=$(cd submodule2; git rev-parse HEAD) && + git rm --cached submodule2 && + rm -rf submodule2 && + mkdir -p "moved/sub module" && + git update-index --add --cacheinfo 160000 $H "moved/sub module" && + git config -f .gitmodules submodule.submodule2.path "moved/sub module" + git commit -am "post move" && + git submodule update && + git status >actual && + test_cmp expect actual + ) +' + test_done -- cgit v0.10.2-6-g49f6 From 4dce7d9b408b2935b85721b54a2010eda7ec1be9 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Sun, 4 Mar 2012 22:16:19 +0100 Subject: submodules: fix ambiguous absolute paths under Windows Under Windows the "git rev-parse --git-dir" and "pwd" commands may return either drive-letter-colon or POSIX style paths. This makes module_clone() behave badly because it expects absolute paths to always start with a '/'. Fix that by always converting the "c:/" notation into "/c/" when computing the relative paths from gitdir to the submodule work tree and back. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano diff --git a/git-submodule.sh b/git-submodule.sh index a9e9822..efc86ad 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -151,6 +151,9 @@ module_clone() a=$(cd "$gitdir" && pwd)/ b=$(cd "$path" && pwd)/ + # normalize Windows-style absolute paths to POSIX-style absolute paths + case $a in [a-zA-Z]:/*) a=/${a%%:*}${a#*:} ;; esac + case $b in [a-zA-Z]:/*) b=/${b%%:*}${b#*:} ;; esac # Remove all common leading directories after a sanity check if test "${a#$b}" != "$a" || test "${b#$a}" != "$b"; then die "$(eval_gettext "Gitdir '\$a' is part of the submodule path '\$b' or vice versa")" -- cgit v0.10.2-6-g49f6 From 3ea2232d8d273af2cac9bb57b9af80cfe6fa4b22 Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Tue, 6 Mar 2012 10:32:43 +0100 Subject: Documentation/git-branch: cleanups Most of the exact option strings to be typed by end users are already set in typewriter font by using `--option`, but a few places used '--option' to call for italics or with no quoting. Uniformly use `--option`. Also add a full-stop after a sentence that missed one. Signed-off-by: Vincent van Ravesteijn Signed-off-by: Junio C Hamano diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index 0427e80..d3a923a 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -24,7 +24,7 @@ be highlighted with an asterisk. Option `-r` causes the remote-tracking branches to be listed, and option `-a` shows both. This list mode is also activated by the `--list` option (see below). restricts the output to matching branches, the pattern is a shell -wildcard (i.e., matched using fnmatch(3)) +wildcard (i.e., matched using fnmatch(3)). Multiple patterns may be given; if any of them matches, the tag is shown. With `--contains`, shows only the branches that contain the named commit @@ -49,7 +49,7 @@ the remote-tracking branch. This behavior may be changed via the global overridden by using the `--track` and `--no-track` options, and changed later using `git branch --set-upstream`. -With a '-m' or '-M' option, will be renamed to . +With a `-m` or `-M` option, will be renamed to . If had a corresponding reflog, it is renamed to match , and a reflog entry is created to remember the branch renaming. If exists, -M must be used to force the rename @@ -59,7 +59,7 @@ With a `-d` or `-D` option, `` will be deleted. You may specify more than one branch for deletion. If the branch currently has a reflog then the reflog will also be deleted. -Use -r together with -d to delete remote-tracking branches. Note, that it +Use `-r` together with `-d` to delete remote-tracking branches. Note, that it only makes sense to delete remote-tracking branches if they no longer exist in the remote repository or if 'git fetch' was configured not to fetch them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a @@ -154,9 +154,9 @@ start-point is either a local or remote-tracking branch. branch.autosetupmerge configuration variable is true. --set-upstream:: - If specified branch does not exist yet or if '--force' has been - given, acts exactly like '--track'. Otherwise sets up configuration - like '--track' would when creating the branch, except that where + If specified branch does not exist yet or if `--force` has been + given, acts exactly like `--track`. Otherwise sets up configuration + like `--track` would when creating the branch, except that where branch points to is not changed. --edit-description:: -- cgit v0.10.2-6-g49f6 From ebab98942069400b12aa357c95e3e8f7a4f26bab Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Tue, 6 Mar 2012 10:32:44 +0100 Subject: Documentation/git-branch: fix a typo Fix a typo by replacing 'tag' with 'branch'. Signed-off-by: Vincent van Ravesteijn Signed-off-by: Junio C Hamano diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index d3a923a..cfceac5 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -25,7 +25,7 @@ branches to be listed, and option `-a` shows both. This list mode is also activated by the `--list` option (see below). restricts the output to matching branches, the pattern is a shell wildcard (i.e., matched using fnmatch(3)). -Multiple patterns may be given; if any of them matches, the tag is shown. +Multiple patterns may be given; if any of them matches, the branch is shown. With `--contains`, shows only the branches that contain the named commit (in other words, the branches whose tip commits are descendants of the -- cgit v0.10.2-6-g49f6 From f36ed6db699673bcfb010ab7343bacd5537eb679 Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Tue, 6 Mar 2012 10:32:45 +0100 Subject: Documentation/git-branch: add default for --contains Indicate that the commit parameter of --contains defaults to HEAD. Signed-off-by: Vincent van Ravesteijn Signed-off-by: Junio C Hamano diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index cfceac5..6410c3d 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -163,8 +163,9 @@ start-point is either a local or remote-tracking branch. Open an editor and edit the text to explain what the branch is for, to be used by various other commands (e.g. `request-pull`). ---contains :: - Only list branches which contain the specified commit. +--contains []:: + Only list branches which contain the specified commit (HEAD + if not specified). --merged []:: Only list branches whose tips are reachable from the -- cgit v0.10.2-6-g49f6 From e65ceb61cd7d3fabedea8cb545f8c210b48552d4 Mon Sep 17 00:00:00 2001 From: Jakub Narebski Date: Fri, 2 Mar 2012 23:34:24 +0100 Subject: gitweb: Fix fixed string (non-regexp) project search Use $search_regexp, where regex metacharacters are quoted, for searching projects list, rather than $searchtext, which contains original search term. Reported-by: Ramsay Jones Signed-off-by: Jakub Narebski Signed-off-by: Junio C Hamano diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 50a835a..a7e0d8f 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -2905,10 +2905,10 @@ sub filter_forks_from_projects_list { sub search_projects_list { my ($projlist, %opts) = @_; my $tagfilter = $opts{'tagfilter'}; - my $searchtext = $opts{'searchtext'}; + my $search_re = $opts{'search_regexp'}; return @$projlist - unless ($tagfilter || $searchtext); + unless ($tagfilter || $search_re); my @projects; PROJECT: @@ -2920,10 +2920,10 @@ sub search_projects_list { grep { lc($_) eq lc($tagfilter) } keys %{$pr->{'ctags'}}; } - if ($searchtext) { + if ($search_re) { next unless - $pr->{'path'} =~ /$searchtext/ || - $pr->{'descr_long'} =~ /$searchtext/; + $pr->{'path'} =~ /$search_re/ || + $pr->{'descr_long'} =~ /$search_re/; } push @projects, $pr; @@ -5089,7 +5089,7 @@ sub git_project_list_body { my $show_ctags = gitweb_check_feature('ctags'); my $tagfilter = $show_ctags ? $cgi->param('by_tag') : undef; $check_forks = undef - if ($tagfilter || $searchtext); + if ($tagfilter || $search_regexp); # filtering out forks before filling info allows to do less work @projects = filter_forks_from_projects_list(\@projects) @@ -5097,9 +5097,9 @@ sub git_project_list_body { @projects = fill_project_list_info(\@projects); # searching projects require filling to be run before it @projects = search_projects_list(\@projects, - 'searchtext' => $searchtext, + 'search_regexp' => $search_regexp, 'tagfilter' => $tagfilter) - if ($tagfilter || $searchtext); + if ($tagfilter || $search_regexp); $order ||= $default_projects_order; $from = 0 unless defined $from; -- cgit v0.10.2-6-g49f6 From d34e70d6b89b33c398403e872c0dd751d44c7844 Mon Sep 17 00:00:00 2001 From: Karsten Blees Date: Tue, 6 Mar 2012 10:18:41 +0100 Subject: fix deletion of .git/objects sub-directories in git-prune/repack Both git-prune and git-repack (and thus, git-gc) try to rmdir while holding a DIR* handle on the directory. This can leave dangling empty directories in the .git/objects on platforms where directory cannot be removed while they are open. First call closedir() and then rmdir(); that is more logical ordering. Reported-by: John Chen Reported-by: Stefan Naewe Signed-off-by: Karsten Blees Improved-and-Acked-by: Johannes Sixt Signed-off-by: Junio C Hamano diff --git a/builtin/prune-packed.c b/builtin/prune-packed.c index f9463de..b58a2e1 100644 --- a/builtin/prune-packed.c +++ b/builtin/prune-packed.c @@ -35,8 +35,6 @@ static void prune_dir(int i, DIR *dir, char *pathname, int len, int opts) unlink_or_warn(pathname); display_progress(progress, i + 1); } - pathname[len] = 0; - rmdir(pathname); } void prune_packed_objects(int opts) @@ -65,6 +63,8 @@ void prune_packed_objects(int opts) continue; prune_dir(i, d, pathname, len + 3, opts); closedir(d); + pathname[len + 2] = '\0'; + rmdir(pathname); } stop_progress(&progress); } diff --git a/builtin/prune.c b/builtin/prune.c index 58d7cb8..b99b635 100644 --- a/builtin/prune.c +++ b/builtin/prune.c @@ -85,9 +85,9 @@ static int prune_dir(int i, char *path) } fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name); } + closedir(dir); if (!show_only) rmdir(path); - closedir(dir); return 0; } -- cgit v0.10.2-6-g49f6 From 1cbc32403b20f064ec7c295c6603f6fd16662bce Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Thu, 8 Mar 2012 09:54:54 +0100 Subject: perf: load test-lib-functions from the correct directory Loading it in the subshells still referred to $TEST_DIRECTORY/.., which was only correct in preliminary versions of perf-lib.sh Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano diff --git a/t/perf/p0000-perf-lib-sanity.sh b/t/perf/p0000-perf-lib-sanity.sh index 2ca4aac..f8dd536 100755 --- a/t/perf/p0000-perf-lib-sanity.sh +++ b/t/perf/p0000-perf-lib-sanity.sh @@ -38,4 +38,9 @@ test_expect_success 'test_export works with weird vars' ' test "$bar" = "weird # variable" ' +test_perf 'test-lib-functions correctly loaded in subshells' ' + : >a && + test_path_is_file a +' + test_done diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index 2a5e1f3..bcc0131 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -119,7 +119,7 @@ test_run_perf_ () { test_export_="test_cleanup" export test_cleanup test_export_ /usr/bin/time -f "%E %U %S" -o test_time.$i "$SHELL" -c ' -. '"$TEST_DIRECTORY"/../test-lib-functions.sh' +. '"$TEST_DIRECTORY"/test-lib-functions.sh' test_export () { [ $# != 0 ] || return 0 test_export_="$test_export_\\|$1" -- cgit v0.10.2-6-g49f6 From 561ae0673569f43a92ea6b0776ae0f4c01472dca Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Thu, 8 Mar 2012 09:54:55 +0100 Subject: perf: export some important test-lib variables The only bug right now is that $GIT_TEST_CMP is needed for test_cmp to work. However, we also export the three most important paths for tests: TEST_DIRECTORY TRASH_DIRECTORY GIT_BUILD_DIR Since they are available within test_expect_success, a future test writer may expect them to also be defined in test_perf. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano diff --git a/t/perf/p0000-perf-lib-sanity.sh b/t/perf/p0000-perf-lib-sanity.sh index f8dd536..cf8e1ef 100755 --- a/t/perf/p0000-perf-lib-sanity.sh +++ b/t/perf/p0000-perf-lib-sanity.sh @@ -38,9 +38,18 @@ test_expect_success 'test_export works with weird vars' ' test "$bar" = "weird # variable" ' +test_perf 'important variables available in subshells' ' + test -n "$HOME" && + test -n "$TEST_DIRECTORY" && + test -n "$TRASH_DIRECTORY" && + test -n "$GIT_BUILD_DIR" +' + test_perf 'test-lib-functions correctly loaded in subshells' ' : >a && - test_path_is_file a + test_path_is_file a && + : >b && + test_cmp a b ' test_done diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index bcc0131..5580c22 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -45,6 +45,10 @@ TEST_NO_CREATE_REPO=t . ../test-lib.sh +# Variables from test-lib that are normally internal to the tests; we +# need to export them for test_perf subshells +export TEST_DIRECTORY TRASH_DIRECTORY GIT_BUILD_DIR GIT_TEST_CMP + perf_results_dir=$TEST_OUTPUT_DIRECTORY/test-results mkdir -p "$perf_results_dir" rm -f "$perf_results_dir"/$(basename "$0" .sh).subtests -- cgit v0.10.2-6-g49f6 From 42e52e358be1da6e3500a8d0d930ed08a8dd3715 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Mar 2012 13:08:26 -0800 Subject: Update draft release notes to 1.7.10 Also apply typofixes people on the list helped spotting and correcting. Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt index ae446e0..a8fd0ac 100644 --- a/Documentation/RelNotes/1.7.10.txt +++ b/Documentation/RelNotes/1.7.10.txt @@ -43,20 +43,23 @@ UI, Workflows & Features * A content filter (clean/smudge) used to be just a way to make the recorded contents "more useful", and allowed to fail; a filter can - new optionally be marked as "required". + now optionally be marked as "required". * Options whose names begin with "--no-" (e.g. the "--no-verify" option of the "git commit" command) can be negated by omitting "no-" from its name, e.g. "git commit --verify". * "git am" learned to pass "-b" option to underlying "git mailinfo", so - that bracketed string other than "PATCH" at the beginning can be kept. + that a bracketed string other than "PATCH" at the beginning can be kept. * "git clone" learned "--single-branch" option to limit cloning to a - single branch (surprise!). + single branch (surprise!); tags that do not point into the history + of the branch are not fetched. * "git clone" learned to detach the HEAD in the resulting repository - when the source repository's HEAD does not point to a branch. + when the user specifies a tag with "--branch" (e.g., "--branch=v1.0"). + Clone also learned to print the usual "detached HEAD" advice in such + a case, similar to "git checkout v1.0". * When showing a patch while ignoring whitespace changes, the context lines are taken from the postimage, in order to make it easier to @@ -71,9 +74,12 @@ UI, Workflows & Features * "fsck" learned "--no-dangling" option to omit dangling object information. - * "git log -G" learned to pay attention to the "-i" option and can - find patch hunks that introduce or remove a string that matches the - given pattern ignoring the case. + * "git log -G" and "git log -S" learned to pay attention to the "-i" + option. With "-i", "log -G" ignores the case when finding patch + hunks that introduce or remove a string that matches the given + pattern. Similarly with "-i", "log -S" ignores the case when + finding the commit the given block of text appears or disappears + from the file. * "git merge" in an interactive session learned to spawn the editor by default to let the user edit the auto-generated merge message, @@ -82,12 +88,15 @@ UI, Workflows & Features Both "git merge" and "git pull" can be given --no-edit from the command line to accept the auto-generated merge message. - * The advise message given when the user didn't give enough clue on + * The advice message given when the user didn't give enough clue on what to merge to "git pull" and "git merge" has been updated to be more concise and easier to understand. * "git push" learned the "--prune" option, similar to "git fetch". + * The whole directory that houses a top-level superproject managed by + "git submodule" can be moved to another place. + * "git symbolic-ref" learned the "--short" option to abbreviate the refname it shows unambiguously. @@ -95,7 +104,7 @@ UI, Workflows & Features output to those that point at the given object. * "gitweb" allows intermediate entries in the directory hierarchy - that leads to a projects to be clicked, which in turn shows the + that leads to a project to be clicked, which in turn shows the list of projects inside that directory. * "gitweb" learned to read various pieces of information for the @@ -149,6 +158,10 @@ Internal Implementation (please report possible regressions) * The code to check if a path points at a file beyond a symbolic link has been restructured to be thread-safe. + * When pruning directories that has become empty during "git prune" + and "git prune-packed", call closedir() that iterates over a + directory before rmdir() it. + Also contains minor documentation updates and code clean-ups. @@ -179,9 +192,14 @@ details). accessed in a repository whose HEAD does not point at a valid branch. + * "gitweb" did use quotemeta() to prepare search string when asked to + do a fixed-string project search, but did not use it by mistake and + used the user-supplied string instead. + (merge e65ceb6 jn/maint-do-not-match-with-unsanitized-searchtext later to maint). + --- exec >/var/tmp/1 -O=v1.7.9.3-366-g1e4d087 +O=v1.7.10-rc0-15-g9a4c97e echo O=$(git describe) git log --first-parent --oneline ^maint $O.. echo -- cgit v0.10.2-6-g49f6 From a2c25061aa2cfa2f60d092a5b7bc9c00c4beca90 Mon Sep 17 00:00:00 2001 From: Alex Zepeda Date: Thu, 8 Mar 2012 12:07:20 -0800 Subject: verify-tag: Parse GPG configuration options. Modify verify-tag to load relevant GPG variables from the git configuratio file. This allows git tag -v to use an alternative GPG binary in the same way that git tag -s does. Signed-off-by: Alex Zepeda Signed-off-by: Junio C Hamano diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c index 28c2174..986789f 100644 --- a/builtin/verify-tag.c +++ b/builtin/verify-tag.c @@ -58,6 +58,14 @@ static int verify_tag(const char *name, int verbose) return ret; } +static int git_verify_tag_config(const char *var, const char *value, void *cb) +{ + int status = git_gpg_config(var, value, cb); + if (status) + return status; + return git_default_config(var, value, cb); +} + int cmd_verify_tag(int argc, const char **argv, const char *prefix) { int i = 1, verbose = 0, had_error = 0; @@ -66,7 +74,7 @@ int cmd_verify_tag(int argc, const char **argv, const char *prefix) OPT_END() }; - git_config(git_default_config, NULL); + git_config(git_verify_tag_config, NULL); argc = parse_options(argc, argv, prefix, verify_tag_options, verify_tag_usage, PARSE_OPT_KEEP_ARGV0); -- cgit v0.10.2-6-g49f6 From 3e7a1df84d1eba94530d5bf62caa215f5d3e78d3 Mon Sep 17 00:00:00 2001 From: Phil Hord Date: Thu, 8 Mar 2012 16:08:50 -0500 Subject: rerere: Document 'rerere remaining' This adds the 'remaining' command to the documentation of 'git rerere'. This command was added in ac49f5ca (Feb 16 2011; Martin von Zweigbergk ) but it was never documented. Touch up the other rerere commands to reduce noise. First noticed by Vincent van Ravesteijn. Signed-off-by: Phil Hord Signed-off-by: Junio C Hamano diff --git a/Documentation/git-rerere.txt b/Documentation/git-rerere.txt index a6253ba..b43b7c8 100644 --- a/Documentation/git-rerere.txt +++ b/Documentation/git-rerere.txt @@ -8,7 +8,7 @@ git-rerere - Reuse recorded resolution of conflicted merges SYNOPSIS -------- [verse] -'git rerere' ['clear'|'forget' |'diff'|'status'|'gc'] +'git rerere' ['clear'|'forget' |'diff'|'remaining'|'status'|'gc'] DESCRIPTION ----------- @@ -37,30 +37,35 @@ its working state. 'clear':: -This resets the metadata used by rerere if a merge resolution is to be +Reset the metadata used by rerere if a merge resolution is to be aborted. Calling 'git am [--skip|--abort]' or 'git rebase [--skip|--abort]' will automatically invoke this command. 'forget' :: -This resets the conflict resolutions which rerere has recorded for the current +Reset the conflict resolutions which rerere has recorded for the current conflict in . 'diff':: -This displays diffs for the current state of the resolution. It is +Display diffs for the current state of the resolution. It is useful for tracking what has changed while the user is resolving conflicts. Additional arguments are passed directly to the system 'diff' command installed in PATH. 'status':: -Like 'diff', but this only prints the filenames that will be tracked -for resolutions. +Print paths with conflicts whose merge resolution rerere will record. + +'remaining':: + +Print paths with conflicts that have not been autoresolved by rerere. +This includes paths whose resolutions cannot be tracked by rerere, +such as conflicting submodules. 'gc':: -This prunes records of conflicted merges that +Prune records of conflicted merges that occurred a long time ago. By default, unresolved conflicts older than 15 days and resolved conflicts older than 60 days are pruned. These defaults are controlled via the -- cgit v0.10.2-6-g49f6 From 745950ce0e7e984158a00cd52c5811918d1f3495 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Fri, 9 Mar 2012 10:52:54 +0100 Subject: p4000: use -3000 when promising -3000 The 'log -3000 (baseline)' test accidentally still used -1000 from an earlier version. Noticed-by: Lawrence Holding Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano diff --git a/t/perf/p4000-diff-algorithms.sh b/t/perf/p4000-diff-algorithms.sh index d6e505c..7e00c9d 100755 --- a/t/perf/p4000-diff-algorithms.sh +++ b/t/perf/p4000-diff-algorithms.sh @@ -7,7 +7,7 @@ test_description="Tests diff generation performance" test_perf_default_repo test_perf 'log -3000 (baseline)' ' - git log -1000 >/dev/null + git log -3000 >/dev/null ' test_perf 'log --raw -3000 (tree-only)' ' -- cgit v0.10.2-6-g49f6 From 9b9f46f5c12cd7fbb4f194a2533bea1edef573fb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 7 Mar 2012 15:36:59 -0800 Subject: t0204: clarify the "observe undefined behaviour" test This test asks for an impossible conversion to the system by preparing an UTF-8 translation with characters that cannot be expressed in ISO-8859-1, and then asking the message shown in ISO-8859-1. Even though the behaviour against such a request is undefined, it may be interesting to see what the system does, and the purpose of this test is to see if there are platforms that exhibit behaviour that we haven't seen. The original recognized two known modes of behaviour: - the key used to query the message catalog ("TEST: Old English Runes"), saying "I cannot do that i18n". - impossible characters replaced with ASCII "?", saying "I punt". but they were treated totally differently. The test simply issued an informational message "Your system punts on this one" for the first error mode, while it diagnosed the latter as "Your system is good; you pass!". It turns out that Mac OS X exhibits a third mode of error behaviour, to spew out the raw value stored in the message catalog. The test diagnosed this behaviour as "broken", but it is merely trying to do its best to respond to an impossible request by saying "I punt" in a way that is slightly different from the second one. Update the offending test to make it clear what is (and is not) being tested, update the code structure so that newly discovered error mode can easily be added to it later, and reword the message that comes from a failing case to clarify that it is not the system that is broken when it fails, but merely that the behaviour is not something we have seen. Signed-off-by: Junio C Hamano diff --git a/t/t0204-gettext-reencode-sanity.sh b/t/t0204-gettext-reencode-sanity.sh index 189af90..8437e51 100755 --- a/t/t0204-gettext-reencode-sanity.sh +++ b/t/t0204-gettext-reencode-sanity.sh @@ -7,6 +7,10 @@ test_description="Gettext reencoding of our *.po/*.mo files works" . ./lib-gettext.sh +# The constants used in a tricky observation for undefined behaviour +RUNES="TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ" +PUNTS="TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????" +MSGKEY="TEST: Old English Runes" test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our UTF-8 *.mo files / Icelandic' ' printf "TILRAUN: Halló Heimur!" >expect && @@ -15,8 +19,8 @@ test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our UTF-8 *.mo ' test_expect_success GETTEXT_LOCALE 'gettext: Emitting UTF-8 from our UTF-8 *.mo files / Runes' ' - printf "TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ" >expect && - LANGUAGE=is LC_ALL="$is_IS_locale" gettext "TEST: Old English Runes" >actual && + printf "%s" "$RUNES" >expect && + LANGUAGE=is LC_ALL="$is_IS_locale" gettext "$MSGKEY" >actual && test_cmp expect actual ' @@ -26,18 +30,23 @@ test_expect_success GETTEXT_ISO_LOCALE 'gettext: Emitting ISO-8859-1 from our UT test_cmp expect actual ' -test_expect_success GETTEXT_ISO_LOCALE 'gettext: Emitting ISO-8859-1 from our UTF-8 *.mo files / Runes' ' - LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "TEST: Old English Runes" >runes && - - if grep "^TEST: Old English Runes$" runes - then - say "Your system can not handle this complexity and returns the string as-is" - else - # Both Solaris and GNU libintl will return this stream of - # question marks, so it is s probably portable enough - printf "TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????" >runes-expect && - test_cmp runes-expect runes - fi +test_expect_success GETTEXT_ISO_LOCALE 'gettext: impossible ISO-8859-1 output' ' + LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "$MSGKEY" >runes && + case "$(cat runes)" in + "$MSGKEY") + say "Your system gives back the key to message catalog" + ;; + "$PUNTS") + say "Your system replaces an impossible character with ?" + ;; + "$RUNES") + say "Your system gives back the raw message for an impossible request" + ;; + *) + say "We never saw the error behaviour your system exhibits" + false + ;; + esac ' test_expect_success GETTEXT_LOCALE 'gettext: Fetching a UTF-8 msgid -> UTF-8' ' -- cgit v0.10.2-6-g49f6 From 4b340593551217904d794cc0a8db55db89b5b066 Mon Sep 17 00:00:00 2001 From: Martin Stenberg Date: Fri, 9 Mar 2012 22:57:54 +0100 Subject: config: report errors at the EOL with correct line number A section in a config file with a missing "]" reports the next line as bad, same goes to a value with a missing end quote. This happens because the error is not detected until the end of the line, when line number is already increased. Fix this by decreasing line number by one for these cases. Signed-off-by: Martin Stenberg Signed-off-by: Junio C Hamano diff --git a/config.c b/config.c index d3bcaa0..fc27913 100644 --- a/config.c +++ b/config.c @@ -135,8 +135,10 @@ static char *parse_value(void) for (;;) { int c = get_next_char(); if (c == '\n') { - if (quote) + if (quote) { + cf->linenr--; return NULL; + } return cf->value.buf; } if (comment) @@ -226,7 +228,7 @@ static int get_extended_base_var(char *name, int baselen, int c) { do { if (c == '\n') - return -1; + goto error_incomplete_line; c = get_next_char(); } while (isspace(c)); @@ -238,13 +240,13 @@ static int get_extended_base_var(char *name, int baselen, int c) for (;;) { int c = get_next_char(); if (c == '\n') - return -1; + goto error_incomplete_line; if (c == '"') break; if (c == '\\') { c = get_next_char(); if (c == '\n') - return -1; + goto error_incomplete_line; } name[baselen++] = c; if (baselen > MAXNAME / 2) @@ -255,6 +257,9 @@ static int get_extended_base_var(char *name, int baselen, int c) if (get_next_char() != ']') return -1; return baselen; +error_incomplete_line: + cf->linenr--; + return -1; } static int get_base_var(char *name) diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index dffccf8..23c8711 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -928,4 +928,35 @@ test_expect_success 'git -c complains about empty key and value' ' test_must_fail git -c "" rev-parse ' +# malformed configuration files +test_expect_success 'barf on syntax error' ' + cat >.git/config <<-\EOF && + # broken section line + [section] + key garbage + EOF + test_must_fail git config --get section.key >actual 2>error && + grep " line 3 " error +' + +test_expect_success 'barf on incomplete section header' ' + cat >.git/config <<-\EOF && + # broken section line + [section + key = value + EOF + test_must_fail git config --get section.key >actual 2>error && + grep " line 2 " error +' + +test_expect_success 'barf on incomplete string' ' + cat >.git/config <<-\EOF && + # broken section line + [section] + key = "value string + EOF + test_must_fail git config --get section.key >actual 2>error && + grep " line 3 " error +' + test_done -- cgit v0.10.2-6-g49f6 From ac06116d44ae3738e7ad0f711074186e006a1eb5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Mar 2012 14:41:15 -0700 Subject: i18n: fix auto detection of gettext scheme for shell scripts A new code added by ad17ea7 (add a Makefile switch to avoid gettext translation in shell scripts, 2012-01-23) tried to optionally force a gettext scheme to "fallthrough", but ended up forcing it to everybody. Signed-off-by: Junio C Hamano diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh index d5fae99..6a27f68 100644 --- a/git-sh-i18n.sh +++ b/git-sh-i18n.sh @@ -21,7 +21,7 @@ GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough if test -n "@@USE_GETTEXT_SCHEME@@" then GIT_INTERNAL_GETTEXT_SH_SCHEME="@@USE_GETTEXT_SCHEME@@" -elif test -n "@@USE_FALLTHROUGH_GETTEXT_SCHEME@@$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" +elif test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" then : no probing necessary elif test -n "$GIT_GETTEXT_POISON" -- cgit v0.10.2-6-g49f6 From 4eeb1de1c3855968bcd2d58b223fd187ae510d73 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Mon, 12 Mar 2012 22:47:19 +0100 Subject: git-am: error out when seeing -b/--binary The --binary option to git-apply has been a no-op since 2b6eef9 (Make apply --binary a no-op., 2006-09-06) and was deprecated in cb3a160 (git-am: ignore --binary option, 2008-08-09). We could remove it outright, but let's be nice to people who still have scripts saying 'git am -b' (if they exist) and tell them the reason for the sudden failure. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano diff --git a/git-am.sh b/git-am.sh index 0bd290b..faae820 100755 --- a/git-am.sh +++ b/git-am.sh @@ -380,7 +380,9 @@ do -i|--interactive) interactive=t ;; -b|--binary) - : ;; + echo >&2 "The -b/--binary option was deprecated in 1.6.0 and removed in 1.7.10." + die "Please adjust your scripts." + ;; -3|--3way) threeway=t ;; -s|--signoff) -- cgit v0.10.2-6-g49f6 From a46034819ecce6872bff099f3d75589f4d38c00c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Mar 2012 15:52:52 -0700 Subject: Git 1.7.9.4 Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes/1.7.9.4.txt b/Documentation/RelNotes/1.7.9.4.txt new file mode 100644 index 0000000..e5217a1 --- /dev/null +++ b/Documentation/RelNotes/1.7.9.4.txt @@ -0,0 +1,24 @@ +Git v1.7.9.4 Release Notes +========================== + +Fixes since v1.7.9.3 +-------------------- + + * The code to synthesize the fake ancestor tree used by 3-way merge + fallback in "git am" was not prepared to read a patch created with + a non-standard -p value. + + * "git bundle" did not record boundary commits correctly when there + are many of them. + + * "git diff-index" and its friends at the plumbing level showed the + "diff --git" header and nothing else for a path whose cached stat + info is dirty without actual difference when asked to produce a + patch. This was a longstanding bug that we could have fixed long + time ago. + + * "gitweb" did use quotemeta() to prepare search string when asked to + do a fixed-string project search, but did not use it by mistake and + used the user-supplied string instead. + +Also contains minor fixes and documentation updates. diff --git a/Documentation/git.txt b/Documentation/git.txt index b257d80..d5b7667 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -44,9 +44,10 @@ unreleased) version of git, that is available from 'master' branch of the `git.git` repository. Documentation for older releases are available here: -* link:v1.7.9.3/git.html[documentation for release 1.7.9.3] +* link:v1.7.9.4/git.html[documentation for release 1.7.9.4] * release notes for + link:RelNotes/1.7.9.4.txt[1.7.9.4], link:RelNotes/1.7.9.3.txt[1.7.9.3], link:RelNotes/1.7.9.2.txt[1.7.9.2], link:RelNotes/1.7.9.1.txt[1.7.9.1], diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index de203dd..8ddc96d 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.7.9.3 +DEF_VER=v1.7.9.4 LF=' ' diff --git a/RelNotes b/RelNotes index 36a5885..f9f04dd 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ -Documentation/RelNotes/1.7.9.3.txt \ No newline at end of file +Documentation/RelNotes/1.7.9.4.txt \ No newline at end of file -- cgit v0.10.2-6-g49f6 From fa678feb7ca12e306e2eaeb0078028505ab3318a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Mar 2012 15:59:06 -0700 Subject: Update draft release notes to 1.7.10 before -rc1 Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt index a8fd0ac..65df74b 100644 --- a/Documentation/RelNotes/1.7.10.txt +++ b/Documentation/RelNotes/1.7.10.txt @@ -25,6 +25,10 @@ Compatibility Notes "git merge" command if you know everybody who uses your script has Git v1.7.8 or newer. + * The "--binary/-b" options to "git am" have been a no-op for quite a + while and was deprecated in mid 2008 (v1.6.0). When you give these + options to "git am", it will now fail with an error. + Updates since v1.7.9 -------------------- @@ -115,6 +119,10 @@ UI, Workflows & Features * Project search in "gitweb" shows the substring that matched in the project name and description highlighted. + * A new script "diffall" is added to contrib/; it drives an external + an external tool to perform a directory diff of two Git revisions + in one go, unlike "difftool" that compares one file at a time. + Foreign Interface * Improved handling of views, labels and branches in "git-p4" (in contrib). @@ -172,34 +180,17 @@ Unless otherwise noted, all the fixes since v1.7.9 in the maintenance releases are contained in this release (see release notes to them for details). - * "git bundle" did not record boundary commits correctly when there - are many of them. - (merge efe4be1 tr/maint-bundle-boundary later to maint). - - * "git diff-index" and its friends at the plumbing level showed the - "diff --git" header and nothing else for a path whose cached stat - info is dirty without actual difference when asked to produce a - patch. This was a longstanding bug that we could have fixed long - time ago. - (merge b3f01ff jc/maint-diff-patch-header later to maint). - - * The code to synthesize the fake ancestor tree used by 3-way merge - fallback in "git am" was not prepared to read a patch created with - a non-standard -p value. - (merge a61ba26 jc/am-3-nonstandard-popt later to maint). + * "git tag -s" honored "gpg.program" configuration variable since + 1.7.9, but "git tag -v" and "git verify-tag" didn't. + (merge a2c2506 az/verify-tag-use-gpg-config later to maint). * "gitweb" used to drop warnings in the log file when "heads" view is accessed in a repository whose HEAD does not point at a valid branch. - * "gitweb" did use quotemeta() to prepare search string when asked to - do a fixed-string project search, but did not use it by mistake and - used the user-supplied string instead. - (merge e65ceb6 jn/maint-do-not-match-with-unsanitized-searchtext later to maint). - --- exec >/var/tmp/1 -O=v1.7.10-rc0-15-g9a4c97e +O=v1.7.10-rc0-40-g57cec0a echo O=$(git describe) git log --first-parent --oneline ^maint $O.. echo -- cgit v0.10.2-6-g49f6 From 6c15a1c63634005a0f8fb15696e154cc54b0a359 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Mar 2012 11:38:27 -0700 Subject: am: officially deprecate -b/--binary option We have had these options as harmless no-op for more than 3 years without officially deprecating them. Let's announce the deprecation and start warning against their use, but without failing the command just not yet, so that we can later repurpose the option if we want to in the future. Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt index 65df74b..6286485 100644 --- a/Documentation/RelNotes/1.7.10.txt +++ b/Documentation/RelNotes/1.7.10.txt @@ -26,8 +26,8 @@ Compatibility Notes Git v1.7.8 or newer. * The "--binary/-b" options to "git am" have been a no-op for quite a - while and was deprecated in mid 2008 (v1.6.0). When you give these - options to "git am", it will now fail with an error. + while and were deprecated in mid 2008 (v1.6.0). When you give these + options to "git am", it will now warn and ask you not to use them. Updates since v1.7.9 diff --git a/git-am.sh b/git-am.sh index faae820..4da0dda 100755 --- a/git-am.sh +++ b/git-am.sh @@ -380,8 +380,8 @@ do -i|--interactive) interactive=t ;; -b|--binary) - echo >&2 "The -b/--binary option was deprecated in 1.6.0 and removed in 1.7.10." - die "Please adjust your scripts." + echo >&2 "The $1 option has been a no-op for long time, and" + echo >&2 "it will be removed. Please do not use it anymore." ;; -3|--3way) threeway=t ;; -- cgit v0.10.2-6-g49f6 From 0e2d57fd50f61e668be3180bc8f25991ea88aa8c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 14 Mar 2012 15:38:47 -0700 Subject: Git 1.7.10-rc1 Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt index 6286485..540ce38 100644 --- a/Documentation/RelNotes/1.7.10.txt +++ b/Documentation/RelNotes/1.7.10.txt @@ -119,8 +119,8 @@ UI, Workflows & Features * Project search in "gitweb" shows the substring that matched in the project name and description highlighted. - * A new script "diffall" is added to contrib/; it drives an external - an external tool to perform a directory diff of two Git revisions + * A new script "diffall" is added to contrib/; it drives an + external tool to perform a directory diff of two Git revisions in one go, unlike "difftool" that compares one file at a time. Foreign Interface @@ -180,17 +180,25 @@ Unless otherwise noted, all the fixes since v1.7.9 in the maintenance releases are contained in this release (see release notes to them for details). + * The "remaining" subcommand to "git rerere" was not documented. + (merge 3e7a1df ph/rerere-doc later to maint). + * "git tag -s" honored "gpg.program" configuration variable since 1.7.9, but "git tag -v" and "git verify-tag" didn't. (merge a2c2506 az/verify-tag-use-gpg-config later to maint). + * When "git config" diagnoses an error in a configuration file and + shows the line number for the offending line, it miscounted if the + error was at the end of line. + (merge 4b34059 ms/maint-config-error-at-eol-linecount later to maint). + * "gitweb" used to drop warnings in the log file when "heads" view is accessed in a repository whose HEAD does not point at a valid branch. --- exec >/var/tmp/1 -O=v1.7.10-rc0-40-g57cec0a +O=v1.7.10-rc0-50-gd973dc0 echo O=$(git describe) git log --first-parent --oneline ^maint $O.. echo diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index f28ceef..1c06cec 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.7.10-rc0 +DEF_VER=v1.7.10-rc1 LF=' ' -- cgit v0.10.2-6-g49f6