mirror of
https://github.com/git/git.git
synced 2026-03-29 11:00:07 +02:00
Merge branch 'master' into next
* master: Git 1.7.2-rc2 backmerge a few more fixes to 1.7.1.X series rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option fix git branch -m in presence of cross devices t/t0006: specify timezone as EST5 not EST to comply with POSIX
This commit is contained in:
19
Documentation/RelNotes-1.7.1.2.txt
Normal file
19
Documentation/RelNotes-1.7.1.2.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
Git v1.7.1.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.7.1.1
|
||||
--------------------
|
||||
|
||||
* "git commit" did not honor GIT_REFLOG_ACTION environment variable, resulting
|
||||
reflog messages for cherry-pick and revert actions to be recorded as "commit".
|
||||
|
||||
* "git clone/fetch/pull" issued an incorrect error message when a ref and
|
||||
a symref that points to the ref were updated at the same time. This
|
||||
obviously would update them to the same value, and should not result in
|
||||
an error condition.
|
||||
|
||||
* "git diff" inside a tree with many pathnames that have certain
|
||||
characters has become very slow in 1.7.0 by mistake.
|
||||
|
||||
* "git rev-parse --parseopt --stop-at-non-option" did not stop at non option
|
||||
when --keep-dashdash was in effect.
|
||||
@@ -121,6 +121,8 @@ Updates since v1.7.1
|
||||
highlighting, "plackup" support for instaweb, .fcgi suffix to run
|
||||
it as FastCGI script, etc.
|
||||
|
||||
* The test harness has been updated to produce TAP-friendly output.
|
||||
|
||||
|
||||
Fixes since v1.7.1
|
||||
------------------
|
||||
@@ -129,23 +131,11 @@ All of the fixes in v1.7.1.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
* We didn't URL decode "file:///path/to/repo" correctly when path/to/repo
|
||||
had percent-encoded characters (638794c, 9d2e942).
|
||||
|
||||
* "git commit" did not honor GIT_REFLOG_ACTION environment variable, resulting
|
||||
reflog messages for cherry-pick and revert actions to be recorded as "commit".
|
||||
|
||||
* "git clone/fetch/pull" issued an incorrect error message when a ref and
|
||||
a symref that points to the ref were updated at the same time. This
|
||||
obviously would update them to the same value, and should not result in
|
||||
an error condition (0e71bc3).
|
||||
had percent-encoded characters (638794c, 9d2e942, ce83eda, 3c73a1d).
|
||||
|
||||
* "git clone" did not configure remote.origin.url correctly for bare
|
||||
clones (df61c889).
|
||||
|
||||
* "git diff" inside a tree with many pathnames that have certain
|
||||
characters has become very slow in 1.7.0 by mistake (will merge
|
||||
e53e6b443 to 'maint').
|
||||
|
||||
* "git diff --graph" works better with "--color-words" and other options
|
||||
(81fa024..4297c0a).
|
||||
|
||||
@@ -157,6 +147,6 @@ release, unless otherwise noted.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.7.2-rc0-60-g2927a50
|
||||
O=v1.7.2-rc1-37-g2a16315
|
||||
echo O=$(git describe HEAD)
|
||||
git shortlog --no-merges HEAD ^maint ^$O
|
||||
|
||||
@@ -407,8 +407,8 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
|
||||
ALLOC_GROW(opts, onb + 1, osz);
|
||||
memset(opts + onb, 0, sizeof(opts[onb]));
|
||||
argc = parse_options(argc, argv, prefix, opts, usage,
|
||||
keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0 |
|
||||
stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0 |
|
||||
(keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0) |
|
||||
(stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0) |
|
||||
PARSE_OPT_SHELL_EVAL);
|
||||
|
||||
strbuf_addf(&parsed, " --");
|
||||
|
||||
21
refs.c
21
refs.c
@@ -1090,6 +1090,15 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* People using contrib's git-new-workdir have .git/logs/refs ->
|
||||
* /some/other/path/.git/logs/refs, and that may live on another device.
|
||||
*
|
||||
* IOW, to avoid cross device rename errors, the temporary renamed log must
|
||||
* live into logs/refs.
|
||||
*/
|
||||
#define TMP_RENAMED_LOG "logs/refs/.tmp-renamed-log"
|
||||
|
||||
int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
{
|
||||
static const char renamed_ref[] = "RENAMED-REF";
|
||||
@@ -1123,8 +1132,8 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
if (write_ref_sha1(lock, orig_sha1, logmsg))
|
||||
return error("unable to save current sha1 in %s", renamed_ref);
|
||||
|
||||
if (log && rename(git_path("logs/%s", oldref), git_path("tmp-renamed-log")))
|
||||
return error("unable to move logfile logs/%s to tmp-renamed-log: %s",
|
||||
if (log && rename(git_path("logs/%s", oldref), git_path(TMP_RENAMED_LOG)))
|
||||
return error("unable to move logfile logs/%s to "TMP_RENAMED_LOG": %s",
|
||||
oldref, strerror(errno));
|
||||
|
||||
if (delete_ref(oldref, orig_sha1, REF_NODEREF)) {
|
||||
@@ -1150,7 +1159,7 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
}
|
||||
|
||||
retry:
|
||||
if (log && rename(git_path("tmp-renamed-log"), git_path("logs/%s", newref))) {
|
||||
if (log && rename(git_path(TMP_RENAMED_LOG), git_path("logs/%s", newref))) {
|
||||
if (errno==EISDIR || errno==ENOTDIR) {
|
||||
/*
|
||||
* rename(a, b) when b is an existing
|
||||
@@ -1163,7 +1172,7 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
}
|
||||
goto retry;
|
||||
} else {
|
||||
error("unable to move logfile tmp-renamed-log to logs/%s: %s",
|
||||
error("unable to move logfile "TMP_RENAMED_LOG" to logs/%s: %s",
|
||||
newref, strerror(errno));
|
||||
goto rollback;
|
||||
}
|
||||
@@ -1203,8 +1212,8 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
error("unable to restore logfile %s from %s: %s",
|
||||
oldref, newref, strerror(errno));
|
||||
if (!logmoved && log &&
|
||||
rename(git_path("tmp-renamed-log"), git_path("logs/%s", oldref)))
|
||||
error("unable to restore logfile %s from tmp-renamed-log: %s",
|
||||
rename(git_path(TMP_RENAMED_LOG), git_path("logs/%s", oldref)))
|
||||
error("unable to restore logfile %s from "TMP_RENAMED_LOG": %s",
|
||||
oldref, strerror(errno));
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -39,7 +39,7 @@ check_parse 2008-02 bad
|
||||
check_parse 2008-02-14 bad
|
||||
check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 +0000'
|
||||
check_parse '2008-02-14 20:30:45 -0500' '2008-02-14 20:30:45 -0500'
|
||||
check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 -0500' EST
|
||||
check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 -0500' EST5
|
||||
|
||||
check_approxidate() {
|
||||
echo "$1 -> $2 +0000" >expect
|
||||
|
||||
@@ -81,4 +81,22 @@ test_expect_success 'test --parseopt --keep-dashdash' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
set -- --foo -- '--' 'arg' '--spam=ham'
|
||||
EOF
|
||||
|
||||
test_expect_success 'test --parseopt --keep-dashdash --stop-at-non-option with --' '
|
||||
git rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo -- arg --spam=ham <optionspec >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat > expect <<EOF
|
||||
set -- --foo -- 'arg' '--spam=ham'
|
||||
EOF
|
||||
|
||||
test_expect_success 'test --parseopt --keep-dashdash --stop-at-non-option without --' '
|
||||
git rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo arg --spam=ham <optionspec >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user