svn commit: r308562 - head/tools/tools/git
Ryan Stone
rstone at FreeBSD.org
Fri Nov 11 23:07:32 UTC 2016
Author: rstone
Date: Fri Nov 11 23:07:31 2016
New Revision: 308562
URL: https://svnweb.freebsd.org/changeset/base/308562
Log:
Fix git tools when run against a worktree
In a git worktree, the gitdir is in an entirely different location.
In arcgit, use git rev-parse --git-dir to get the correct path to it
always.
When running git from outside of the work tree, as in importgit,
the path provided by git rev-parse --git-dir can be either a
relative or absolute path depending on the work tree. Rather
than trying to deal with that, just use git -C.
Differential Revision: https://reviews.freebsd.org/D8501
Reviewed by: markj
Modified:
head/tools/tools/git/arcgit
head/tools/tools/git/importgit
Modified: head/tools/tools/git/arcgit
==============================================================================
--- head/tools/tools/git/arcgit Fri Nov 11 21:53:38 2016 (r308561)
+++ head/tools/tools/git/arcgit Fri Nov 11 23:07:31 2016 (r308562)
@@ -69,7 +69,7 @@ create_review()
git checkout $commit > /dev/null || error "Could not checkout $commit"
- arc_dir="$(git rev-parse --show-toplevel)/.git/arc"
+ arc_dir="$(git rev-parse --git-dir)/arc"
arc_msg="$arc_dir/create-message"
mkdir -p $arc_dir
git show -s --format='%B' HEAD > $arc_msg
Modified: head/tools/tools/git/importgit
==============================================================================
--- head/tools/tools/git/importgit Fri Nov 11 21:53:38 2016 (r308561)
+++ head/tools/tools/git/importgit Fri Nov 11 23:07:31 2016 (r308562)
@@ -50,7 +50,7 @@ error()
exit 1
}
-unset git range commit dry_run
+unset git_repo range commit dry_run
while getopts ":c:g:nr:" o
do
@@ -95,16 +95,16 @@ then
error -u "-g <repo> argument is mandatory"
fi
-git="$git_repo/.git"
-
-if [ ! -d "$git" ]
+if ! type git > /dev/null 2> /dev/null
then
- error "$git_repo does not seem to be a git repo"
+ error "Install devel/git first"
fi
-if ! type git > /dev/null 2> /dev/null
+GIT="git -C $git_repo"
+
+if ! $GIT rev-parse --git-dir 2> /dev/null > /dev/null
then
- error "Install devel/git first"
+ error "$git_repo does not seem to be a git repo"
fi
if ! type svn > /dev/null 2> /dev/null
@@ -122,21 +122,21 @@ then
error "Could not communicate with svn server. Is your ssh key loaded?"
fi
-git --git-dir=$git log --format=%H $range | tail -r | while read -r commit
+$GIT log --format=%H $range | tail -r | while read -r commit
do
- echo "Applying `git --git-dir=$git show -s --oneline $commit`"
+ echo "Applying `$GIT show -s --oneline $commit`"
- if [ -n "$(git --git-dir=$git show --diff-filter=CDRTUXB $commit)" ]
+ if [ -n "$($GIT show --diff-filter=CDRTUXB $commit)" ]
then
error "Commit performed unsupported change (e.g. delete/rename)"
fi
- if [ "$(git --git-dir=$git show -s --format=%P $commit | wc -w)" -ne 1 ]
+ if [ "$($GIT show -s --format=%P $commit | wc -w)" -ne 1 ]
then
error "Cannot import merge commits"
fi
- git --git-dir=$git diff --diff-filter=A --name-only \
+ $GIT diff --diff-filter=A --name-only \
${commit}~..$commit | while read -r newfile
do
if [ -f "$newfile" ]
@@ -158,10 +158,10 @@ do
continue
fi
- git --git-dir=$git show $commit | patch -p 1 -s || \
+ $GIT show $commit | patch -p 1 -s || \
error "Failed to apply patch"
- git --git-dir=$git diff --diff-filter=A --name-only \
+ $GIT diff --diff-filter=A --name-only \
${commit}~..$commit | while read -r newfile
do
svn add --parents --depth=infinity $newfile || \
@@ -176,7 +176,7 @@ do
exit $ret
fi
- git --git-dir=$git show -s --format='%B' $commit | svn commit -F - || \
+ $GIT show -s --format='%B' $commit | svn commit -F - || \
error "Failed to commit"
done
More information about the svn-src-all
mailing list