mirror of
https://github.com/git/git.git
synced 2026-03-14 02:43:25 +01:00
Merge branch 'js/shallow' into next
* js/shallow: count-objects -v: show number of packs as well. everyday: update for v1.5.0 git-svn: dcommit should diff against the current HEAD after committing git-svn: quiet down tests and fix some unportable shell constructs hooks/commit-msg: add example to add Signed-off-by line to message move git-blame to its place in .gitignore Add git-reflog to .gitignore
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -11,6 +11,7 @@ git-applypatch
|
||||
git-archimport
|
||||
git-archive
|
||||
git-bisect
|
||||
git-blame
|
||||
git-branch
|
||||
git-cat-file
|
||||
git-check-ref-format
|
||||
@@ -88,6 +89,7 @@ git-quiltimport
|
||||
git-read-tree
|
||||
git-rebase
|
||||
git-receive-pack
|
||||
git-reflog
|
||||
git-relink
|
||||
git-repack
|
||||
git-repo-config
|
||||
@@ -153,4 +155,3 @@ config.status
|
||||
config.mak.autogen
|
||||
config.mak.append
|
||||
configure
|
||||
git-blame
|
||||
|
||||
@@ -47,11 +47,11 @@ $ git repack <3>
|
||||
$ git prune <4>
|
||||
------------
|
||||
+
|
||||
<1> running without "--full" is usually cheap and assures the
|
||||
<1> running without `\--full` is usually cheap and assures the
|
||||
repository health reasonably well.
|
||||
<2> check how many loose objects there are and how much
|
||||
disk space is wasted by not repacking.
|
||||
<3> without "-a" repacks incrementally. repacking every 4-5MB
|
||||
<3> without `-a` repacks incrementally. repacking every 4-5MB
|
||||
of loose objects accumulation may be a good rule of thumb.
|
||||
<4> after repack, prune removes the duplicate loose objects.
|
||||
|
||||
@@ -80,8 +80,7 @@ following commands.
|
||||
* gitlink:git-checkout[1] and gitlink:git-branch[1] to switch
|
||||
branches.
|
||||
|
||||
* gitlink:git-add[1] and gitlink:git-update-index[1] to manage
|
||||
the index file.
|
||||
* gitlink:git-add[1] to manage the index file.
|
||||
|
||||
* gitlink:git-diff[1] and gitlink:git-status[1] to see what
|
||||
you are in the middle of doing.
|
||||
@@ -91,8 +90,7 @@ following commands.
|
||||
* gitlink:git-reset[1] and gitlink:git-checkout[1] (with
|
||||
pathname parameters) to undo changes.
|
||||
|
||||
* gitlink:git-pull[1] with "." as the remote to merge between
|
||||
local branches.
|
||||
* gitlink:git-merge[1] to merge between local branches.
|
||||
|
||||
* gitlink:git-rebase[1] to maintain topic branches.
|
||||
|
||||
@@ -101,7 +99,7 @@ following commands.
|
||||
Examples
|
||||
~~~~~~~~
|
||||
|
||||
Use a tarball as a starting point for a new repository:
|
||||
Use a tarball as a starting point for a new repository.::
|
||||
+
|
||||
------------
|
||||
$ tar zxf frotz.tar.gz
|
||||
@@ -123,7 +121,7 @@ $ edit/compile/test
|
||||
$ git checkout -- curses/ux_audio_oss.c <2>
|
||||
$ git add curses/ux_audio_alsa.c <3>
|
||||
$ edit/compile/test
|
||||
$ git diff <4>
|
||||
$ git diff HEAD <4>
|
||||
$ git commit -a -s <5>
|
||||
$ edit/compile/test
|
||||
$ git reset --soft HEAD^ <6>
|
||||
@@ -131,15 +129,15 @@ $ edit/compile/test
|
||||
$ git diff ORIG_HEAD <7>
|
||||
$ git commit -a -c ORIG_HEAD <8>
|
||||
$ git checkout master <9>
|
||||
$ git pull . alsa-audio <10>
|
||||
$ git merge alsa-audio <10>
|
||||
$ git log --since='3 days ago' <11>
|
||||
$ git log v2.43.. curses/ <12>
|
||||
------------
|
||||
+
|
||||
<1> create a new topic branch.
|
||||
<2> revert your botched changes in "curses/ux_audio_oss.c".
|
||||
<2> revert your botched changes in `curses/ux_audio_oss.c`.
|
||||
<3> you need to tell git if you added a new file; removal and
|
||||
modification will be caught if you do "commit -a" later.
|
||||
modification will be caught if you do `git commit -a` later.
|
||||
<4> to see what changes you are committing.
|
||||
<5> commit everything as you have tested, with your sign-off.
|
||||
<6> take the last commit back, keeping what is in the working tree.
|
||||
@@ -147,11 +145,13 @@ modification will be caught if you do "commit -a" later.
|
||||
<8> redo the commit undone in the previous step, using the message
|
||||
you originally wrote.
|
||||
<9> switch to the master branch.
|
||||
<10> merge a topic branch into your master branch
|
||||
<10> merge a topic branch into your master branch. You can also use
|
||||
`git pull . alsa-audio`, i.e. pull from the local repository.
|
||||
<11> review commit logs; other forms to limit output can be
|
||||
combined and include --max-count=10 (show 10 commits), --until='2005-12-10'.
|
||||
<12> view only the changes that touch what's in curses/
|
||||
directory, since v2.43 tag.
|
||||
combined and include `\--max-count=10` (show 10 commits),
|
||||
`\--until=2005-12-10`, etc.
|
||||
<12> view only the changes that touch what's in `curses/`
|
||||
directory, since `v2.43` tag.
|
||||
|
||||
|
||||
Individual Developer (Participant)[[Individual Developer (Participant)]]
|
||||
@@ -193,7 +193,7 @@ $ git fetch --tags <8>
|
||||
+
|
||||
<1> repeat as needed.
|
||||
<2> extract patches from your branch for e-mail submission.
|
||||
<3> "pull" fetches from "origin" by default and merges into the
|
||||
<3> `git pull` fetches from `origin` by default and merges into the
|
||||
current branch.
|
||||
<4> immediately after pulling, look at the changes done upstream
|
||||
since last time we checked, only in the
|
||||
@@ -201,37 +201,41 @@ area we are interested in.
|
||||
<5> fetch from a specific branch from a specific repository and merge.
|
||||
<6> revert the pull.
|
||||
<7> garbage collect leftover objects from reverted pull.
|
||||
<8> from time to time, obtain official tags from the "origin"
|
||||
and store them under .git/refs/tags/.
|
||||
<8> from time to time, obtain official tags from the `origin`
|
||||
and store them under `.git/refs/tags/`.
|
||||
|
||||
|
||||
Push into another repository.::
|
||||
+
|
||||
------------
|
||||
satellite$ git clone mothership:frotz/.git frotz <1>
|
||||
satellite$ git clone mothership:frotz frotz <1>
|
||||
satellite$ cd frotz
|
||||
satellite$ cat .git/remotes/origin <2>
|
||||
URL: mothership:frotz/.git
|
||||
Pull: master:origin
|
||||
satellite$ echo 'Push: master:satellite' >>.git/remotes/origin <3>
|
||||
satellite$ git repo-config --get-regexp '^(remote|branch)\.' <2>
|
||||
remote.origin.url mothership:frotz
|
||||
remote.origin.fetch refs/heads/*:refs/remotes/origin/*
|
||||
branch.master.remote origin
|
||||
branch.master.merge refs/heads/master
|
||||
satellite$ git repo-config remote.origin.push \
|
||||
master:refs/remotes/satellite/master <3>
|
||||
satellite$ edit/compile/test/commit
|
||||
satellite$ git push origin <4>
|
||||
|
||||
mothership$ cd frotz
|
||||
mothership$ git checkout master
|
||||
mothership$ git pull . satellite <5>
|
||||
mothership$ git merge satellite/master <5>
|
||||
------------
|
||||
+
|
||||
<1> mothership machine has a frotz repository under your home
|
||||
directory; clone from it to start a repository on the satellite
|
||||
machine.
|
||||
<2> clone creates this file by default. It arranges "git pull"
|
||||
to fetch and store the master branch head of mothership machine
|
||||
to local "origin" branch.
|
||||
<3> arrange "git push" to push local "master" branch to
|
||||
"satellite" branch of the mothership machine.
|
||||
<4> push will stash our work away on "satellite" branch on the
|
||||
mothership machine. You could use this as a back-up method.
|
||||
<2> clone sets these configuration variables by default.
|
||||
It arranges `git pull` to fetch and store the branches of mothership
|
||||
machine to local `remotes/origin/*` tracking branches.
|
||||
<3> arrange `git push` to push local `master` branch to
|
||||
`remotes/satellite/master` branch of the mothership machine.
|
||||
<4> push will stash our work away on `remotes/satellite/master`
|
||||
tracking branch on the mothership machine. You could use this as
|
||||
a back-up method.
|
||||
<5> on mothership machine, merge the work done on the satellite
|
||||
machine into the master branch.
|
||||
|
||||
@@ -247,7 +251,7 @@ $ git format-patch -k -m --stdout v2.6.14..private2.6.14 |
|
||||
+
|
||||
<1> create a private branch based on a well known (but somewhat behind)
|
||||
tag.
|
||||
<2> forward port all changes in private2.6.14 branch to master branch
|
||||
<2> forward port all changes in `private2.6.14` branch to `master` branch
|
||||
without a formal "merging".
|
||||
|
||||
|
||||
@@ -284,13 +288,13 @@ $ mailx <3>
|
||||
& s 2 3 4 5 ./+to-apply
|
||||
& s 7 8 ./+hold-linus
|
||||
& q
|
||||
$ git checkout master
|
||||
$ git checkout -b topic/one master
|
||||
$ git am -3 -i -s -u ./+to-apply <4>
|
||||
$ compile/test
|
||||
$ git checkout -b hold/linus && git am -3 -i -s -u ./+hold-linus <5>
|
||||
$ git checkout topic/one && git rebase master <6>
|
||||
$ git checkout pu && git reset --hard master <7>
|
||||
$ git pull . topic/one topic/two && git pull . hold/linus <8>
|
||||
$ git checkout pu && git reset --hard next <7>
|
||||
$ git merge topic/one topic/two && git merge hold/linus <8>
|
||||
$ git checkout maint
|
||||
$ git cherry-pick master~4 <9>
|
||||
$ compile/test
|
||||
@@ -307,29 +311,32 @@ they are.
|
||||
that are not quite ready.
|
||||
<4> apply them, interactively, with my sign-offs.
|
||||
<5> create topic branch as needed and apply, again with my
|
||||
sign-offs.
|
||||
sign-offs.
|
||||
<6> rebase internal topic branch that has not been merged to the
|
||||
master, nor exposed as a part of a stable branch.
|
||||
<7> restart "pu" every time from the master.
|
||||
<7> restart `pu` every time from the next.
|
||||
<8> and bundle topic branches still cooking.
|
||||
<9> backport a critical fix.
|
||||
<10> create a signed tag.
|
||||
<11> make sure I did not accidentally rewind master beyond what I
|
||||
already pushed out. "ko" shorthand points at the repository I have
|
||||
already pushed out. `ko` shorthand points at the repository I have
|
||||
at kernel.org, and looks like this:
|
||||
+
|
||||
------------
|
||||
$ cat .git/remotes/ko
|
||||
URL: kernel.org:/pub/scm/git/git.git
|
||||
Pull: master:refs/tags/ko-master
|
||||
Pull: next:refs/tags/ko-next
|
||||
Pull: maint:refs/tags/ko-maint
|
||||
Push: master
|
||||
Push: next
|
||||
Push: +pu
|
||||
Push: maint
|
||||
------------
|
||||
+
|
||||
In the output from "git show-branch", "master" should have
|
||||
everything "ko-master" has.
|
||||
In the output from `git show-branch`, `master` should have
|
||||
everything `ko-master` has, and `next` should have
|
||||
everything `ko-next` has.
|
||||
|
||||
<12> push out the bleeding edge.
|
||||
<13> push the tag out, too.
|
||||
@@ -406,7 +413,7 @@ $ grep git /etc/shells <2>
|
||||
------------
|
||||
+
|
||||
<1> log-in shell is set to /usr/bin/git-shell, which does not
|
||||
allow anything but "git push" and "git pull". The users should
|
||||
allow anything but `git push` and `git pull`. The users should
|
||||
get an ssh access to the machine.
|
||||
<2> in many distributions /etc/shells needs to list what is used
|
||||
as the login shell.
|
||||
|
||||
@@ -20,8 +20,8 @@ OPTIONS
|
||||
-v::
|
||||
In addition to the number of loose objects and disk
|
||||
space consumed, it reports the number of in-pack
|
||||
objects, and number of objects that can be removed by
|
||||
running `git-prune-packed`.
|
||||
objects, number of packs, and number of objects that can be
|
||||
removed by running `git-prune-packed`.
|
||||
|
||||
|
||||
Author
|
||||
|
||||
@@ -105,16 +105,19 @@ int cmd_count_objects(int ac, const char **av, const char *prefix)
|
||||
}
|
||||
if (verbose) {
|
||||
struct packed_git *p;
|
||||
unsigned long num_pack = 0;
|
||||
if (!packed_git)
|
||||
prepare_packed_git();
|
||||
for (p = packed_git; p; p = p->next) {
|
||||
if (!p->pack_local)
|
||||
continue;
|
||||
packed += num_packed_objects(p);
|
||||
num_pack++;
|
||||
}
|
||||
printf("count: %lu\n", loose);
|
||||
printf("size: %lu\n", loose_size / 2);
|
||||
printf("in-pack: %lu\n", packed);
|
||||
printf("packs: %lu\n", num_pack);
|
||||
printf("prune-packable: %lu\n", packed_loose);
|
||||
printf("garbage: %lu\n", garbage);
|
||||
}
|
||||
|
||||
@@ -512,15 +512,15 @@ sub dcommit {
|
||||
}
|
||||
return if $_dry_run;
|
||||
fetch();
|
||||
my @diff = command('diff-tree', $head, $gs, '--');
|
||||
my @diff = command('diff-tree', 'HEAD', $gs, '--');
|
||||
my @finish;
|
||||
if (@diff) {
|
||||
@finish = qw/rebase/;
|
||||
push @finish, qw/--merge/ if $_merge;
|
||||
push @finish, "--strategy=$_strategy" if $_strategy;
|
||||
print STDERR "W: $head and $gs differ, using @finish:\n", @diff;
|
||||
print STDERR "W: HEAD and $gs differ, using @finish:\n", @diff;
|
||||
} else {
|
||||
print "No changes between current $head and $gs\n",
|
||||
print "No changes between current HEAD and $gs\n",
|
||||
"Resetting to the latest $gs\n";
|
||||
@finish = qw/reset --mixed/;
|
||||
}
|
||||
|
||||
@@ -135,8 +135,13 @@ test_expect_success "clone shallow" "git-clone --depth 2 . shallow"
|
||||
test_expect_success "clone shallow object count" \
|
||||
"test \"in-pack: 18\" = \"$(grep in-pack count.shallow)\""
|
||||
|
||||
test_expect_success "clone shallow object count (part 2)" \
|
||||
"test -z \"$(grep -v in-pack count.shallow | sed "s/^.*: 0//")\""
|
||||
count_output () {
|
||||
sed -e '/^in-pack:/d' -e '/^packs:/d' -e '/: 0$/d' "$1"
|
||||
}
|
||||
|
||||
test_expect_success "clone shallow object count (part 2)" '
|
||||
test -z "$(count_output count.shallow)"
|
||||
'
|
||||
|
||||
test_expect_success "fsck in shallow repo" \
|
||||
"(cd shallow; git-fsck-objects --full)"
|
||||
|
||||
@@ -19,180 +19,176 @@ esac
|
||||
|
||||
echo 'define NO_SVN_TESTS to skip git-svn tests'
|
||||
|
||||
mkdir import
|
||||
cd import
|
||||
|
||||
echo foo > foo
|
||||
if test -z "$NO_SYMLINK"
|
||||
then
|
||||
ln -s foo foo.link
|
||||
fi
|
||||
mkdir -p dir/a/b/c/d/e
|
||||
echo 'deep dir' > dir/a/b/c/d/e/file
|
||||
mkdir -p bar
|
||||
echo 'zzz' > bar/zzz
|
||||
echo '#!/bin/sh' > exec.sh
|
||||
chmod +x exec.sh
|
||||
svn import -m 'import for git-svn' . "$svnrepo" >/dev/null
|
||||
|
||||
cd ..
|
||||
rm -rf import
|
||||
|
||||
test_expect_success \
|
||||
'initialize git-svn' \
|
||||
"git-svn init $svnrepo"
|
||||
'initialize git-svn' "
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
echo foo > foo &&
|
||||
if test -z '$NO_SYMLINK'
|
||||
then
|
||||
ln -s foo foo.link
|
||||
fi
|
||||
mkdir -p dir/a/b/c/d/e &&
|
||||
echo 'deep dir' > dir/a/b/c/d/e/file &&
|
||||
mkdir bar &&
|
||||
echo 'zzz' > bar/zzz &&
|
||||
echo '#!/bin/sh' > exec.sh &&
|
||||
chmod +x exec.sh &&
|
||||
svn import -m 'import for git-svn' . $svnrepo >/dev/null &&
|
||||
cd .. &&
|
||||
rm -rf import &&
|
||||
git-svn init $svnrepo"
|
||||
|
||||
test_expect_success \
|
||||
'import an SVN revision into git' \
|
||||
'git-svn fetch'
|
||||
|
||||
test_expect_success "checkout from svn" "svn co $svnrepo $SVN_TREE"
|
||||
test_expect_success "checkout from svn" "svn co $svnrepo '$SVN_TREE'"
|
||||
|
||||
name='try a deep --rmdir with a commit'
|
||||
git checkout -f -b mybranch remotes/git-svn
|
||||
mv dir/a/b/c/d/e/file dir/file
|
||||
cp dir/file file
|
||||
git update-index --add --remove dir/a/b/c/d/e/file dir/file file
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch &&
|
||||
svn up $SVN_TREE &&
|
||||
test -d $SVN_TREE/dir && test ! -d $SVN_TREE/dir/a"
|
||||
test_expect_success "$name" "
|
||||
git checkout -f -b mybranch remotes/git-svn &&
|
||||
mv dir/a/b/c/d/e/file dir/file &&
|
||||
cp dir/file file &&
|
||||
git update-index --add --remove dir/a/b/c/d/e/file dir/file file &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -d '$SVN_TREE'/dir && test ! -d '$SVN_TREE'/dir/a"
|
||||
|
||||
|
||||
name='detect node change from file to directory #1'
|
||||
mkdir dir/new_file
|
||||
mv dir/file dir/new_file/file
|
||||
mv dir/new_file dir/file
|
||||
git update-index --remove dir/file
|
||||
git update-index --add dir/file/file
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_failure "$name" \
|
||||
'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch' \
|
||||
|| true
|
||||
test_expect_failure "$name" "
|
||||
mkdir dir/new_file &&
|
||||
mv dir/file dir/new_file/file &&
|
||||
mv dir/new_file dir/file &&
|
||||
git update-index --remove dir/file &&
|
||||
git update-index --add dir/file/file &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch" || true
|
||||
|
||||
|
||||
name='detect node change from directory to file #1'
|
||||
rm -rf dir $GIT_DIR/index
|
||||
git checkout -f -b mybranch2 remotes/git-svn
|
||||
mv bar/zzz zzz
|
||||
rm -rf bar
|
||||
mv zzz bar
|
||||
git update-index --remove -- bar/zzz
|
||||
git update-index --add -- bar
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_failure "$name" \
|
||||
'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch2' \
|
||||
|| true
|
||||
test_expect_failure "$name" "
|
||||
rm -rf dir '$GIT_DIR'/index &&
|
||||
git checkout -f -b mybranch2 remotes/git-svn &&
|
||||
mv bar/zzz zzz &&
|
||||
rm -rf bar &&
|
||||
mv zzz bar &&
|
||||
git update-index --remove -- bar/zzz &&
|
||||
git update-index --add -- bar &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch2" || true
|
||||
|
||||
|
||||
name='detect node change from file to directory #2'
|
||||
rm -f $GIT_DIR/index
|
||||
git checkout -f -b mybranch3 remotes/git-svn
|
||||
rm bar/zzz
|
||||
git-update-index --remove bar/zzz
|
||||
mkdir bar/zzz
|
||||
echo yyy > bar/zzz/yyy
|
||||
git-update-index --add bar/zzz/yyy
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_failure "$name" \
|
||||
'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch3' \
|
||||
|| true
|
||||
test_expect_failure "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
git checkout -f -b mybranch3 remotes/git-svn &&
|
||||
rm bar/zzz &&
|
||||
git-update-index --remove bar/zzz &&
|
||||
mkdir bar/zzz &&
|
||||
echo yyy > bar/zzz/yyy &&
|
||||
git-update-index --add bar/zzz/yyy &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch3" || true
|
||||
|
||||
|
||||
name='detect node change from directory to file #2'
|
||||
rm -f $GIT_DIR/index
|
||||
git checkout -f -b mybranch4 remotes/git-svn
|
||||
rm -rf dir
|
||||
git update-index --remove -- dir/file
|
||||
touch dir
|
||||
echo asdf > dir
|
||||
git update-index --add -- dir
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_failure "$name" \
|
||||
'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch4' \
|
||||
|| true
|
||||
test_expect_failure "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
git checkout -f -b mybranch4 remotes/git-svn &&
|
||||
rm -rf dir &&
|
||||
git update-index --remove -- dir/file &&
|
||||
touch dir &&
|
||||
echo asdf > dir &&
|
||||
git update-index --add -- dir &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch4" || true
|
||||
|
||||
|
||||
name='remove executable bit from a file'
|
||||
rm -f $GIT_DIR/index
|
||||
git checkout -f -b mybranch5 remotes/git-svn
|
||||
chmod -x exec.sh
|
||||
git update-index exec.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test ! -x $SVN_TREE/exec.sh"
|
||||
test_expect_success "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
git checkout -f -b mybranch5 remotes/git-svn &&
|
||||
chmod -x exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test ! -x '$SVN_TREE'/exec.sh"
|
||||
|
||||
|
||||
name='add executable bit back file'
|
||||
chmod +x exec.sh
|
||||
git update-index exec.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -x $SVN_TREE/exec.sh"
|
||||
|
||||
test_expect_success "$name" "
|
||||
chmod +x exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -x '$SVN_TREE'/exec.sh"
|
||||
|
||||
|
||||
if test -z "$NO_SYMLINK"
|
||||
then
|
||||
name='executable file becomes a symlink to bar/zzz (file)'
|
||||
rm exec.sh
|
||||
ln -s bar/zzz exec.sh
|
||||
git update-index exec.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -L $SVN_TREE/exec.sh"
|
||||
test_expect_success "$name" "
|
||||
rm exec.sh &&
|
||||
ln -s bar/zzz exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -L '$SVN_TREE'/exec.sh"
|
||||
|
||||
name='new symlink is added to a file that was also just made executable'
|
||||
chmod +x bar/zzz
|
||||
ln -s bar/zzz exec-2.sh
|
||||
git update-index --add bar/zzz exec-2.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -x $SVN_TREE/bar/zzz &&
|
||||
test -L $SVN_TREE/exec-2.sh"
|
||||
test_expect_success "$name" "
|
||||
chmod +x bar/zzz &&
|
||||
ln -s bar/zzz exec-2.sh &&
|
||||
git update-index --add bar/zzz exec-2.sh &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -x '$SVN_TREE'/bar/zzz &&
|
||||
test -L '$SVN_TREE'/exec-2.sh"
|
||||
|
||||
name='modify a symlink to become a file'
|
||||
echo git help > help || true
|
||||
rm exec-2.sh
|
||||
cp help exec-2.sh
|
||||
git update-index exec-2.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -f $SVN_TREE/exec-2.sh &&
|
||||
test ! -L $SVN_TREE/exec-2.sh &&
|
||||
diff -u help $SVN_TREE/exec-2.sh"
|
||||
test_expect_success "$name" "
|
||||
echo git help > help || true &&
|
||||
rm exec-2.sh &&
|
||||
cp help exec-2.sh &&
|
||||
git update-index exec-2.sh &&
|
||||
git commit -m '$name' &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -f '$SVN_TREE'/exec-2.sh &&
|
||||
test ! -L '$SVN_TREE'/exec-2.sh &&
|
||||
diff -u help $SVN_TREE/exec-2.sh"
|
||||
fi
|
||||
|
||||
|
||||
if test "$have_utf8" = t
|
||||
then
|
||||
name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL"
|
||||
echo '# hello' >> exec-2.sh
|
||||
git update-index exec-2.sh
|
||||
git commit -m 'éï∏'
|
||||
export LC_ALL="$GIT_SVN_LC_ALL"
|
||||
test_expect_success "$name" "git-svn set-tree HEAD"
|
||||
LC_ALL="$GIT_SVN_LC_ALL"
|
||||
export LC_ALL
|
||||
test_expect_success "$name" "
|
||||
echo '# hello' >> exec-2.sh &&
|
||||
git update-index exec-2.sh &&
|
||||
git commit -m 'éï∏' &&
|
||||
git-svn set-tree HEAD"
|
||||
unset LC_ALL
|
||||
else
|
||||
echo "UTF-8 locale not set, test skipped ($GIT_SVN_LC_ALL)"
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#
|
||||
# To enable this hook, make this file executable.
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
|
||||
Reference in New Issue
Block a user