Merge branch 'maint'

* maint:
  Document additional 1.5.3.5 fixes in release notes
  Avoid 'expr index' on Mac OS X as it isn't supported
  filter-branch: update current branch when rewritten
  fix filter-branch documentation
  helpful error message when send-pack finds no refs in common.
  Fix setup_git_directory_gently() with relative GIT_DIR & GIT_WORK_TREE
  Correct typos in release notes for 1.5.3.5
This commit is contained in:
Shawn O. Pearce 2007-10-16 23:32:03 -04:00
commit 317efa63fc
8 changed files with 60 additions and 9 deletions

View File

@ -4,21 +4,36 @@ GIT v1.5.3.5 Release Notes
Fixes since v1.5.3.4 Fixes since v1.5.3.4
-------------------- --------------------
* "git-config" silently ignored options after --list; now it wilh * "git-config" silently ignored options after --list; now it will
error out with a usage message. error out with a usage message.
* "git-config --file" failed if the argument used a relative path * "git-config --file" failed if the argument used a relative path
as it changed directories before opening the file. as it changed directories before opening the file.
* "git-config", "git-diff", "git-apply" failed if run from a
subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
* "git-add -i" did not handle single line hunks correctly. * "git-add -i" did not handle single line hunks correctly.
* "git-rebase -i" failed if external diff drivers were used for one
or more files in a commit. It now avoids calling the external
diff drivers.
* "git-log --follow" did not work unless diff generation (e.g. -p) * "git-log --follow" did not work unless diff generation (e.g. -p)
was also requested. was also requested.
* "git-log" printed extra newlines between commits when a diff * "git-log" printed extra newlines between commits when a diff
was generated internally (e.g. -S or --follow) but not displayed. was generated internally (e.g. -S or --follow) but not displayed.
* Documention updates for supported (but previously undocumented) * "git-push" error message is more helpful when pushing to a
repository with no matching refs and none specified.
* "git-filter-branch" now updates the working directory when it
has finished filtering the current branch.
* "git-instaweb" no longer fails on Mac OS X.
* Documentation updates for supported (but previously undocumented)
options of "git-archive" and "git-reflog". options of "git-archive" and "git-reflog".
* "make clean" no longer deletes the configure script that ships * "make clean" no longer deletes the configure script that ships

View File

@ -180,8 +180,7 @@ A significantly faster version:
git filter-branch --index-filter 'git update-index --remove filename' HEAD git filter-branch --index-filter 'git update-index --remove filename' HEAD
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Now, you will get the rewritten history saved in the branch 'newbranch' Now, you will get the rewritten history saved in HEAD.
(your current branch is left untouched).
To set a commit (which typically is at the tip of another To set a commit (which typically is at the tip of another
history) to be the parent of the current initial commit, in history) to be the parent of the current initial commit, in

View File

@ -94,6 +94,10 @@ USAGE="[--env-filter <command>] [--tree-filter <command>] \
. git-sh-setup . git-sh-setup
git diff-files --quiet &&
git diff-index --cached --quiet HEAD ||
die "Cannot rewrite branch(es) with a dirty working directory."
tempdir=.git-rewrite tempdir=.git-rewrite
filter_env= filter_env=
filter_tree= filter_tree=
@ -196,6 +200,9 @@ do
esac esac
done < "$tempdir"/backup-refs done < "$tempdir"/backup-refs
ORIG_GIT_DIR="$GIT_DIR"
ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
export GIT_DIR GIT_WORK_TREE=. export GIT_DIR GIT_WORK_TREE=.
# These refs should be updated if their heads were rewritten # These refs should be updated if their heads were rewritten
@ -413,4 +420,12 @@ echo
test $count -gt 0 && echo "These refs were rewritten:" test $count -gt 0 && echo "These refs were rewritten:"
git show-ref | grep ^"$orig_namespace" git show-ref | grep ^"$orig_namespace"
unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE
test -z "$ORIG_GIT_DIR" || GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR
test -z "$ORIG_GIT_WORK_TREE" || GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" &&
export GIT_WORK_TREE
test -z "$ORIG_GIT_INDEX_FILE" || GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" &&
export GIT_INDEX_FILE
git read-tree -u -m HEAD
exit $ret exit $ret

View File

@ -30,8 +30,7 @@ test -z "$port" && port=1234
start_httpd () { start_httpd () {
httpd_only="`echo $httpd | cut -f1 -d' '`" httpd_only="`echo $httpd | cut -f1 -d' '`"
if test "`expr index $httpd_only /`" -eq '1' || \ if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac
which $httpd_only >/dev/null
then then
$httpd $fqgitdir/gitweb/httpd.conf $httpd $fqgitdir/gitweb/httpd.conf
else else

View File

@ -205,7 +205,8 @@ static int send_pack(int in, int out, struct remote *remote, int nr_refspec, cha
return -1; return -1;
if (!remote_refs) { if (!remote_refs) {
fprintf(stderr, "No refs in common and none specified; doing nothing.\n"); fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
"Perhaps you should specify a branch such as 'master'.\n");
return 0; return 0;
} }

13
setup.c
View File

@ -227,9 +227,20 @@ const char *setup_git_directory_gently(int *nongit_ok)
if (PATH_MAX - 40 < strlen(gitdirenv)) if (PATH_MAX - 40 < strlen(gitdirenv))
die("'$%s' too big", GIT_DIR_ENVIRONMENT); die("'$%s' too big", GIT_DIR_ENVIRONMENT);
if (is_git_directory(gitdirenv)) { if (is_git_directory(gitdirenv)) {
static char buffer[1024 + 1];
const char *retval;
if (!work_tree_env) if (!work_tree_env)
return set_work_tree(gitdirenv); return set_work_tree(gitdirenv);
return NULL; retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
get_git_work_tree());
if (!retval || !*retval)
return NULL;
set_git_dir(make_absolute_path(gitdirenv));
if (chdir(work_tree_env) < 0)
die ("Could not chdir to %s", work_tree_env);
strcat(buffer, "/");
return retval;
} }
if (nongit_ok) { if (nongit_ok) {
*nongit_ok = 1; *nongit_ok = 1;

View File

@ -103,4 +103,13 @@ test_expect_success 'repo finds its work tree from work tree, too' '
test sub/dir/tracked = "$(git ls-files)") test sub/dir/tracked = "$(git ls-files)")
' '
test_expect_success '_gently() groks relative GIT_DIR & GIT_WORK_TREE' '
cd repo.git/work/sub/dir &&
GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
git diff --exit-code tracked &&
echo changed > tracked &&
! GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
git diff --exit-code tracked
'
test_done test_done

View File

@ -41,7 +41,9 @@ test_expect_success 'rewrite, renaming a specific file' '
' '
test_expect_success 'test that the file was renamed' ' test_expect_success 'test that the file was renamed' '
test d = $(git show HEAD:doh) test d = $(git show HEAD:doh) &&
test -f doh &&
test d = $(cat doh)
' '
git tag oldD HEAD~4 git tag oldD HEAD~4