-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
git svn dcommit: new option --interactive.
Allow the user to check the patch set before it is commited to SVN. It is then possible to accept/discard one patch, accept all, or quit. This interactive mode is similar with 'git send email' behaviour. However, 'git svn dcommit' returns as soon as one patch is discarded. Part of the code was taken from git-send-email.perl (see 'ask' function) Tests several combinations of potential answers to 'git svn dcommit --interactive'. For each of them, test whether patches were commited to SVN or not. Thanks-to Eric Wong <normalperson@yhbt.net> for the initial idea. Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>
- Loading branch information
Frédéric Heitzmann
authored and
Eric Wong
committed
Oct 16, 2011
1 parent
2883969
commit afd7f1e
Showing
3 changed files
with
146 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2011 Frédéric Heitzmann | ||
|
||
test_description='git svn dcommit --interactive series' | ||
. ./lib-git-svn.sh | ||
|
||
test_expect_success 'initialize repo' ' | ||
svn_cmd mkdir -m"mkdir test-interactive" "$svnrepo/test-interactive" && | ||
git svn clone "$svnrepo/test-interactive" test-interactive && | ||
cd test-interactive && | ||
touch foo && git add foo && git commit -m"foo: first commit" && | ||
git svn dcommit | ||
' | ||
|
||
test_expect_success 'answers: y [\n] yes' ' | ||
( | ||
echo "change #1" >> foo && git commit -a -m"change #1" && | ||
echo "change #2" >> foo && git commit -a -m"change #2" && | ||
echo "change #3" >> foo && git commit -a -m"change #3" && | ||
( echo "y | ||
y" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) && | ||
test $(git rev-parse HEAD) = $(git rev-parse remotes/git-svn) | ||
) | ||
' | ||
|
||
test_expect_success 'answers: yes yes no' ' | ||
( | ||
echo "change #1" >> foo && git commit -a -m"change #1" && | ||
echo "change #2" >> foo && git commit -a -m"change #2" && | ||
echo "change #3" >> foo && git commit -a -m"change #3" && | ||
( echo "yes | ||
yes | ||
no" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) && | ||
test $(git rev-parse HEAD^^^) = $(git rev-parse remotes/git-svn) && | ||
git reset --hard remotes/git-svn | ||
) | ||
' | ||
|
||
test_expect_success 'answers: yes quit' ' | ||
( | ||
echo "change #1" >> foo && git commit -a -m"change #1" && | ||
echo "change #2" >> foo && git commit -a -m"change #2" && | ||
echo "change #3" >> foo && git commit -a -m"change #3" && | ||
( echo "yes | ||
quit" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) && | ||
test $(git rev-parse HEAD^^^) = $(git rev-parse remotes/git-svn) && | ||
git reset --hard remotes/git-svn | ||
) | ||
' | ||
|
||
test_expect_success 'answers: all' ' | ||
( | ||
echo "change #1" >> foo && git commit -a -m"change #1" && | ||
echo "change #2" >> foo && git commit -a -m"change #2" && | ||
echo "change #3" >> foo && git commit -a -m"change #3" && | ||
( echo "all" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) && | ||
test $(git rev-parse HEAD) = $(git rev-parse remotes/git-svn) && | ||
git reset --hard remotes/git-svn | ||
) | ||
' | ||
|
||
test_done |