Browse Source

Merge branch 'jc/maint-filter-branch-epoch-date' into maint

In 1.7.9 era, we taught "git rebase" about the raw timestamp format
but we did not teach the same trick to "filter-branch", which rolled
a similar logic on its own.

* jc/maint-filter-branch-epoch-date:
  t7003: add test to filter a branch with a commit at epoch
  date.c: Fix off by one error in object-header date parsing
  filter-branch: do not forget the '@' prefix to force git-timestamp
maint
Junio C Hamano 12 years ago
parent
commit
80ffb7570f
  1. 2
      date.c
  2. 2
      git-filter-branch.sh
  3. 3
      t/t7003-filter-branch.sh
  4. 13
      t/test-lib-functions.sh

2
date.c

@ -624,7 +624,7 @@ static int match_object_header_date(const char *date, unsigned long *timestamp, @@ -624,7 +624,7 @@ static int match_object_header_date(const char *date, unsigned long *timestamp,
unsigned long stamp;
int ofs;

if (*date < '0' || '9' <= *date)
if (*date < '0' || '9' < *date)
return -1;
stamp = strtoul(date, &end, 10);
if (*end != ' ' || stamp == ULONG_MAX || (end[1] != '+' && end[1] != '-'))

2
git-filter-branch.sh

@ -84,7 +84,7 @@ set_ident () { @@ -84,7 +84,7 @@ set_ident () {
s/.*/GIT_'$uid'_EMAIL='\''&'\''; export GIT_'$uid'_EMAIL/p

g
s/^'$lid' [^<]* <[^>]*> \(.*\)$/\1/
s/^'$lid' [^<]* <[^>]*> \(.*\)$/@\1/
s/'\''/'\''\'\'\''/g
s/.*/GIT_'$uid'_DATE='\''&'\''; export GIT_'$uid'_DATE/p


3
t/t7003-filter-branch.sh

@ -5,7 +5,8 @@ test_description='git filter-branch' @@ -5,7 +5,8 @@ test_description='git filter-branch'

test_expect_success 'setup' '
test_commit A &&
test_commit B &&
GIT_COMMITTER_DATE="@0 +0000" GIT_AUTHOR_DATE="@0 +0000" &&
test_commit --notick B &&
git checkout -b branch B &&
test_commit D &&
mkdir dir &&

13
t/test-lib-functions.sh

@ -143,10 +143,19 @@ test_pause () { @@ -143,10 +143,19 @@ test_pause () {
# Both <file> and <contents> default to <message>.

test_commit () {
file=${2:-"$1.t"}
notick= &&
if test "z$1" = "z--notick"
then
notick=yes
shift
fi &&
file=${2:-"$1.t"} &&
echo "${3-$1}" > "$file" &&
git add "$file" &&
test_tick &&
if test -z "$notick"
then
test_tick
fi &&
git commit -m "$1" &&
git tag "$1"
}

Loading…
Cancel
Save