From: Per Cederqvist <cederp@opera.com>
To: Jeff Sipek <jeffpc@josefsipek.net>
Cc: git@vger.kernel.org, ceder@lysator.liu.se
Subject: Re: [GUILT] [PATCH] Change git branch when patches are applied.
Date: Wed, 02 May 2012 08:41:58 +0200 [thread overview]
Message-ID: <4FA0D736.6080107@opera.com> (raw)
In-Reply-To: <20120430150159.GC20761@poseidon.cudanet.local>
On 04/30/2012 05:02 PM, Jeff Sipek wrote:
> On Mon, Apr 30, 2012 at 12:24:06PM +0200, Per Cederqvist wrote:
>> Apply patches on a separate branch. The separate branch is
>> automatically created when Guilt pushes something, and removed when no
>> patches are applied. The name is formed by prepending "guilt/" to the
>> original branch.
>>
>> This breaks the "upstream" relationship, so a mistaken "git push"
>> while patches are applied will no longer mess up your upstream
>> repository.
>>
>> Update the testsuite and documentation.
>>
>> Thanks to Junio C Hamano for suggesting this solution to my problem.
>
> This is a sizable patch that changes how Guilt operates. Part of me likes
> it (I've accidentally git pushed at some point) and part of me doesn't like
> forcing this on everyone.
>
> The obvious solution of course is to add a config option to force the
> old-style branch names. From briefly looking at the change, it looks like
> it should be pretty easily doable - just set old_style_prefix to true if the
> config flag is set. I'll apply it locally, and use it for a while to see
> how it works.
>
> Thanks,
>
> Jeff.
That is a good idea. Actually, I think it makes sense to use the
old-style branch names by default for one or two releases, because
if you have share $HOME between several computers and don't upgrade
guilt at the exact same time on all of them you might end up with
a state where the old Guilt version cannot pop the applied patches.
I have implemented this, and will post it here in a few days once I
have tested it a bit more (and proof-read the commit message :-) ).
I'm thinking about how to test this. Should we extend run-test so
that it runs each test twice, with the setting on and off? And add
supplemental files such as t-001.newbranch.out with the expected
output with the new branch output? Or will that slow down "make test"
too much?
At the moment, I have created t-062.sh which is identical to t-061.sh,
except that it uses the old-style branches. But I did modify some of
the old tests, so we are probably not testing the old-style branch
layout as much as we should.
/ceder
>> Signed-off-by: Per Cederqvist<cederp@opera.com>
>> ---
>> Documentation/guilt.7 | 4 +
>> guilt | 52 +++++-
>> guilt-branch | 12 +-
>> guilt-commit | 7 +
>> guilt-import-commit | 4 +-
>> guilt-repair | 7 +-
>> regression/scaffold | 3 +-
>> regression/t-052.out | 24 +--
>> regression/t-052.sh | 7 +-
>> regression/t-061.out | 468 +++++++++++++++++++++++++++++++++++++++++++++++++
>> regression/t-061.sh | 148 ++++++++++++++++
>> 11 files changed, 713 insertions(+), 23 deletions(-)
>> create mode 100644 regression/t-061.out
>> create mode 100755 regression/t-061.sh
>>
>> diff --git a/Documentation/guilt.7 b/Documentation/guilt.7
>> index 860e6d6..c3fdb3d 100644
>> --- a/Documentation/guilt.7
>> +++ b/Documentation/guilt.7
>> @@ -43,6 +43,10 @@ guards: This file contains any guards that should be applied to the series when
>> series: This file contains a list of all the patch filenames relative to the per\-branch patch directory\&. Empty and commented out lines are ignored\&.
>>
>> status: This file contains the state of the stack\&. What patches are applied\&.
>> +.SH "BRANCH USAGE"
>> +When you have pushed a patch, Guilt automatically changes to a freshly created Git branch\&. The name of the new branch is formed by prepending \fBguilt/\fR to the name of the original branch\&. This is done so that you do not accidentally push a set of Guilt patches to a remote Git repository\&. Once you pop all patches Guilt automatically changes back to the original branch\&.
>> +
>> +This is mostly transparent\&. The only thing you need to remember is that if you use \fBgit checkout\fR to switch to a branch while you have Guilt patches applied, you should use \fBgit checkout guilt/BRANCH\fR instead of \fBgit checkout BRANCH\fR when you want to change back later.
>> .SH "HOOKS"
>> Any guilt operation may execute zero or more hook scripts which can be used to run any housekeeping commands or even abort the execution of the command\&.
>> .SH "HOOKS DIRECTORY"
>> diff --git a/guilt b/guilt
>> index 7f6806e..5d619c5 100755
>> --- a/guilt
>> +++ b/guilt
>> @@ -408,9 +408,9 @@ head_check()
>> return 0 ;;
>> esac
>>
>> - if [ "`git rev-parse refs/heads/$branch`" != "`git rev-parse $1`" ]; then
>> + if [ "`git rev-parse refs/heads/\`git_branch\``" != "`git rev-parse $1`" ]; then
>> disp "Expected HEAD commit $1">&2
>> - disp " got `git rev-parse refs/heads/$branch`">&2
>> + disp " got `git rev-parse refs/heads/\`git_branch\``">&2
>> return 1
>> fi
>> return 0
>> @@ -500,6 +500,11 @@ pop_many_patches()
>> n=`expr $n - $2`
>> head_n "$n"< "$applied"> "$applied.tmp"
>> mv "$applied.tmp" "$applied"
>> + if [ -z "`get_top 2>/dev/null`" ]&& [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ]&& ! $old_style_prefix
>> + then
>> + git symbolic-ref HEAD refs/heads/$branch
>> + git update-ref -d refs/heads/$GUILT_PREFIX$branch
>> + fi
>> )
>> }
>>
>> @@ -585,7 +590,13 @@ commit()
>> # commit
>> treeish=`git write-tree`
>> commitish=`git commit-tree $treeish -p $2< "$TMP_MSG"`
>> - git update-ref HEAD $commitish
>> + if $old_style_prefix || git rev-parse --verify --quiet refs/heads/$GUILT_PREFIX$branch>/dev/null
>> + then
>> + git update-ref HEAD $commitish
>> + else
>> + git branch $GUILT_PREFIX$branch $commitish
>> + git symbolic-ref HEAD refs/heads/$GUILT_PREFIX$branch
>> + fi
>>
>> # mark patch as applied
>> git update-ref "refs/patches/$branch/$pname" HEAD
>> @@ -825,6 +836,9 @@ guilt_push_diff_context=1
>> # default diffstat value: true or false
>> DIFFSTAT_DEFAULT="false"
>>
>> +# Prefix for guilt branches.
>> +GUILT_PREFIX=guilt/
>> +
>> #
>> # Parse any part of .git/config that belongs to us
>> #
>> @@ -839,7 +853,28 @@ diffstat=`git config --bool guilt.diffstat`
>>
>> GUILT_DIR="$GIT_DIR/patches"
>>
>> -branch=`get_branch`
>> +# To make it harder to accidentally do "git push" with a guilt patch
>> +# applied, "guilt push" changes branch from e.g. "master" to
>> +# "guilt/master". Set $git_branch to the full branch name, and
>> +# $branch to the abbreviated name that the user sees most of the time.
>> +# Note: old versions of guilt did not add the "guilt/" prefix. This
>> +# code handles that case as well. The prefix will be added when you
>> +# have no patches applied and do a "guilt push".
>> +raw_git_branch=`get_branch`
>> +branch=`echo "$raw_git_branch" | sed -e 's,^'$GUILT_PREFIX',,'`
>> +
>> +git_branch()
>> +{
>> + if $old_style_prefix
>> + then
>> + echo $branch
>> + elif [ -z "`get_top 2>/dev/null`" ]
>> + then
>> + echo $branch
>> + else
>> + echo $GUILT_PREFIX$branch
>> + fi
>> +}
>>
>> # most of the time we want to verify that the repo's branch has been
>> # initialized, but every once in a blue moon (e.g., we want to run guilt init),
>> @@ -876,4 +911,13 @@ else
>> die "Unsupported operating system: $UNAME_S"
>> fi
>>
>> +if [ "$branch" = "$raw_git_branch" ]&& [ -n "`get_top 2>/dev/null`" ]
>> +then
>> + # This is for compat with old repositories that still have a
>> + # pushed patch without the new-style branch prefix.
>> + old_style_prefix=true
>> +else
>> + old_style_prefix=false
>> +fi
>> +
>> _main "$@"
>> diff --git a/guilt-branch b/guilt-branch
>> index 909f740..4a1f53e 100755
>> --- a/guilt-branch
>> +++ b/guilt-branch
>> @@ -35,8 +35,16 @@ cat "$applied" | while read n; do
>> `git rev-parse "refs/patches/$branch/$n"` ""
>> done
>>
>> -git branch "$newbranch"
>> -git checkout "$newbranch"
>> +if $old_style_prefix || [ -z "`get_top 2>/dev/null`" ]
>> +then
>> + newgitbranch="$newbranch"
>> +else
>> + git update-ref "refs/heads/$newbranch" "refs/heads/$branch" ""
>> + newgitbranch="$GUILT_PREFIX$newbranch"
>> +fi
>> +
>> +git branch "$newgitbranch"
>> +git checkout "$newgitbranch"
>>
>> mkdir -p "$GUILT_DIR/`dirname $newbranch`"
>>
>> diff --git a/guilt-commit b/guilt-commit
>> index 4228be6..e425399 100755
>> --- a/guilt-commit
>> +++ b/guilt-commit
>> @@ -43,4 +43,11 @@ done
>> sed -n -e "${pat_keep}" "$applied"> "$applied.tmp"
>> mv "$applied.tmp" "$applied"
>>
>> +# if we removed the last patch, switch back to the base branch
>> +if [ `wc -l< "$applied"` -eq 0 ]&& [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ]&& ! $old_style_prefix
>> +then
>> + git update-ref refs/heads/$branch refs/heads/$GUILT_PREFIX$branch
>> + git symbolic-ref HEAD refs/heads/$branch
>> + git update-ref -d refs/heads/$GUILT_PREFIX$branch
>> +fi
>> }
>> diff --git a/guilt-import-commit b/guilt-import-commit
>> index 3045a5f..54c1de0 100755
>> --- a/guilt-import-commit
>> +++ b/guilt-import-commit
>> @@ -23,7 +23,7 @@ if ! must_commit_first; then
>> fi
>>
>> disp "About to begin conversion...">&2
>> -disp "Current head: `cat $GIT_DIR/refs/heads/$branch`">&2
>> +disp "Current head: `cat $GIT_DIR/refs/heads/\`git_branch\``">&2
>>
>> for rev in `git rev-list $rhash`; do
>> s=`git log --pretty=oneline -1 $rev | cut -c 42-`
>> @@ -68,6 +68,6 @@ for rev in `git rev-list $rhash`; do
>> done
>>
>> disp "Done.">&2
>> -disp "Current head: `cat $GIT_DIR/refs/heads/$branch`">&2
>> +disp "Current head: `cat $GIT_DIR/refs/heads/\`git_branch\``">&2
>>
>> }
>> diff --git a/guilt-repair b/guilt-repair
>> index 77ad223..c0bf3ed 100755
>> --- a/guilt-repair
>> +++ b/guilt-repair
>> @@ -84,6 +84,11 @@ repair_pushed()
>>
>> # blow away any commits
>> git reset --hard "$newrev"> /dev/null
>> + if [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ]&& ! $old_style_prefix
>> + then
>> + git symbolic-ref HEAD refs/heads/$branch
>> + git update-ref -d refs/heads/$GUILT_PREFIX$branch
>> + fi
>>
>> # blow away the applied stack
>> remove_patch_refs< "$applied"
>> @@ -112,7 +117,7 @@ case "$1" in
>> ;;
>> esac
>>
>> -oldrev=`git show-ref -s "refs/heads/$branch"`
>> +oldrev=`git show-ref -s "refs/heads/\`git_branch\`"`
>>
>> case "$repair" in
>> full)
>> diff --git a/regression/scaffold b/regression/scaffold
>> index 8769058..b38a3f0 100644
>> --- a/regression/scaffold
>> +++ b/regression/scaffold
>> @@ -38,7 +38,8 @@ function replace_path
>> -e "s,^Usage: guilt-,Usage: guilt ,g" \
>> -e "s,\.\.\. initial, initial,g" \
>> -e "s,^Already on\( branch\)\? [\"']\([^\"']*\)[\"']$,Already on \"\2\",g" \
>> - -e "s,^Switched to branch [\"']\([^\"']*\)[\"'],Switched to branch \"\1\",g"
>> + -e "s,^Switched to branch [\"']\([^\"']*\)[\"'],Switched to branch \"\1\",g" \
>> + -e "\\,^Deleted branch guilt/.* (was .*).$,d"
>> }
>>
>> function filter_dd
>> diff --git a/regression/t-052.out b/regression/t-052.out
>> index 3b4a629..8205f35 100644
>> --- a/regression/t-052.out
>> +++ b/regression/t-052.out
>> @@ -47,7 +47,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> Applying patch..modify
>> Patch applied.
>> % guilt branch br-modify
>> -Switched to branch "br-modify"
>> +Switched to branch "guilt/br-modify"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -76,8 +76,8 @@ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status
>> r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify
>> r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> -% git checkout master
>> -Switched to branch "master"
>> +% git checkout guilt/master
>> +Switched to branch "guilt/master"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -109,7 +109,7 @@ r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> Applying patch..add
>> Patch applied.
>> % guilt branch br-add
>> -Switched to branch "br-add"
>> +Switched to branch "guilt/br-add"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -149,8 +149,8 @@ r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify
>> r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add
>> r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> -% git checkout master
>> -Switched to branch "master"
>> +% git checkout guilt/master
>> +Switched to branch "guilt/master"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -193,7 +193,7 @@ r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> Applying patch..remove
>> Patch applied.
>> % guilt branch br-remove
>> -Switched to branch "br-remove"
>> +Switched to branch "guilt/br-remove"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -245,8 +245,8 @@ r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-remove/add
>> r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-remove/remove
>> r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> -% git checkout master
>> -Switched to branch "master"
>> +% git checkout guilt/master
>> +Switched to branch "guilt/master"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -301,7 +301,7 @@ r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> Applying patch..mode
>> Patch applied.
>> % guilt branch br-mode
>> -Switched to branch "br-mode"
>> +Switched to branch "guilt/br-mode"
>> % list_files
>> d .git/patches
>> d .git/patches/br-
>> @@ -366,5 +366,5 @@ r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode
>> r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-mode/remove
>> r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-remove/remove
>> r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> -% git checkout master
>> -Switched to branch "master"
>> +% git checkout guilt/master
>> +Switched to branch "guilt/master"
>> diff --git a/regression/t-052.sh b/regression/t-052.sh
>> index e9c1a59..05bc55b 100755
>> --- a/regression/t-052.sh
>> +++ b/regression/t-052.sh
>> @@ -12,5 +12,10 @@ for x in "" modify add remove mode ; do
>> [ "$x" != "" ]&& guilt push "$x"
>> cmd guilt branch br-$x
>> cmd list_files
>> - cmd git checkout master
>> + if [ "$x" != "" ]
>> + then
>> + cmd git checkout guilt/master
>> + else
>> + cmd git checkout master
>> + fi
>> done
>> diff --git a/regression/t-061.out b/regression/t-061.out
>> new file mode 100644
>> index 0000000..8365236
>> --- /dev/null
>> +++ b/regression/t-061.out
>> @@ -0,0 +1,468 @@
>> +% setup_repo
>> +% guilt push -a
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +Applying patch..remove
>> +Patch applied.
>> +Applying patch..mode
>> +Patch applied.
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> +r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> +r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode
>> +r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% git update-ref refs/heads/master refs/heads/guilt/master
>> +% git symbolic-ref HEAD refs/heads/master
>> +% git update-ref -d refs/heads/guilt/master
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> +r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> +r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode
>> +r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> +% guilt pop
>> +Now at remove.
>> +% git for-each-ref
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt push
>> +Applying patch..mode
>> +Patch applied.
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt pop
>> +Now at remove.
>> +% git for-each-ref
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt pop
>> +Now at add.
>> +% git for-each-ref
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt push
>> +Applying patch..remove
>> +Patch applied.
>> +% git for-each-ref
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt pop
>> +Now at add.
>> +% git for-each-ref
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt pop
>> +Now at modify.
>> +% git for-each-ref
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt push
>> +Applying patch..add
>> +Patch applied.
>> +% git for-each-ref
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt pop
>> +Now at modify.
>> +% git for-each-ref
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt pop
>> +All patches popped.
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% guilt push
>> +Applying patch..modify
>> +Patch applied.
>> +% git for-each-ref
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt pop
>> +All patches popped.
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% guilt pop
>> +No patches applied.
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% guilt push
>> +Applying patch..modify
>> +Patch applied.
>> +% git for-each-ref
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% guilt pop
>> +All patches popped.
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% guilt push -a
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +Applying patch..remove
>> +Patch applied.
>> +Applying patch..mode
>> +Patch applied.
>> +% git update-ref refs/heads/master refs/heads/guilt/master
>> +% git symbolic-ref HEAD refs/heads/master
>> +% git update-ref -d refs/heads/guilt/master
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt pop -a
>> +All patches popped.
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% guilt push add
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +% git for-each-ref
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +% git update-ref refs/heads/master refs/heads/guilt/master
>> +% git symbolic-ref HEAD refs/heads/master
>> +% git update-ref -d refs/heads/guilt/master
>> +% guilt branch topic
>> +Switched to branch "topic"
>> +% git for-each-ref
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify
>> +% guilt pop -a
>> +All patches popped.
>> +% guilt push
>> +Applying patch..modify
>> +Patch applied.
>> +% git for-each-ref
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify
>> +% guilt pop -a
>> +All patches popped.
>> +% git checkout master
>> +Switched to branch "master"
>> +% guilt pop -a
>> +All patches popped.
>> +% git branch -d topic
>> +Deleted branch topic (was d485041).
>> +% rm -r .git/patches/topic
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> +% guilt push -a
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +Applying patch..remove
>> +Patch applied.
>> +Applying patch..mode
>> +Patch applied.
>> +% git update-ref refs/heads/master refs/heads/guilt/master
>> +% git symbolic-ref HEAD refs/heads/master
>> +% git update-ref -d refs/heads/guilt/master
>> +% guilt branch topic
>> +Switched to branch "topic"
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove
>> +% guilt pop -a
>> +All patches popped.
>> +% git checkout master
>> +Switched to branch "master"
>> +% guilt pop -a
>> +All patches popped.
>> +% git branch -d topic
>> +Deleted branch topic (was d485041).
>> +% rm -r .git/patches/topic
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> +% guilt branch topic
>> +Switched to branch "topic"
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/topic
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/topic/status
>> +% guilt pop -a
>> +No patches applied.
>> +% git checkout master
>> +Switched to branch "master"
>> +% guilt pop -a
>> +No patches applied.
>> +% git branch -d topic
>> +Deleted branch topic (was d485041).
>> +% rm -r .git/patches/topic
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> +% guilt push -a
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +Applying patch..remove
>> +Patch applied.
>> +Applying patch..mode
>> +Patch applied.
>> +% guilt branch topic
>> +Switched to branch "guilt/topic"
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/topic
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/topic
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove
>> +f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status
>> +f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/topic/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify
>> +r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify
>> +r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/topic/modify
>> +r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add
>> +r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/topic/add
>> +r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode
>> +r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/topic/mode
>> +r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove
>> +r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/topic/remove
>> +% guilt pop -a
>> +All patches popped.
>> +% git for-each-ref
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic
>> +37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode
>> +33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify
>> +ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove
>> +% guilt pop -a
>> +No patches applied.
>> +ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba
>> +% git checkout guilt/master
>> +Switched to branch "guilt/master"
>> +% guilt pop -a
>> +All patches popped.
>> +% git branch -d topic
>> +Deleted branch topic (was d485041).
>> +% rm -r .git/patches/topic
>> +% git for-each-ref
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/topic
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add
>> +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status
>> +% guilt new newpatch
>> +% git for-each-ref --format=%(refname)
>> +refs/heads/guilt/master
>> +refs/heads/master
>> +refs/patches/master/newpatch
>> +% guilt pop
>> +All patches popped.
>> +% guilt push
>> +Applying patch..newpatch
>> +Patch applied.
>> +% git for-each-ref
>> +25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/guilt/master
>> +d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master
>> +25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/patches/master/newpatch
>> +% git branch
>> +* guilt/master
>> + master
>> +% guilt applied
>> +newpatch
>> +% guilt commit -a
>> +% git for-each-ref
>> +25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master
>> +% git branch
>> +* master
>> +% guilt push -a
>> +Applying patch..modify
>> +Patch applied.
>> +Applying patch..add
>> +Patch applied.
>> +Applying patch..remove
>> +Patch applied.
>> +Applying patch..mode
>> +Patch applied.
>> +% guilt applied
>> +modify
>> +add
>> +remove
>> +mode
>> +% git branch
>> +* guilt/master
>> + master
>> +% git for-each-ref
>> +fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/guilt/master
>> +25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master
>> +5effcbeb303e8433935151d8c69f3bf63db1e8ef commit refs/patches/master/add
>> +fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode
>> +9509f22e2e627756d87b42432931c45955b74234 commit refs/patches/master/modify
>> +9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove
>> +% guilt commit -n 2
>> +% git for-each-ref
>> +fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/guilt/master
>> +25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master
>> +fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode
>> +9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove
>> +% git branch
>> +* guilt/master
>> + master
>> +% guilt commit -n 2
>> +% git for-each-ref
>> +fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/master
>> +% git branch
>> +* master
>> +% guilt series
>> diff --git a/regression/t-061.sh b/regression/t-061.sh
>> new file mode 100755
>> index 0000000..1411baa
>> --- /dev/null
>> +++ b/regression/t-061.sh
>> @@ -0,0 +1,148 @@
>> +#!/bin/bash
>> +#
>> +# Test the branch-switching upgrade code
>> +#
>> +
>> +source $REG_DIR/scaffold
>> +
>> +old_style_branch() {
>> + # Modify the refs so that it looks as if the patch series was applied
>> + # by an old version of guilt.
>> + cmd git update-ref refs/heads/$1 refs/heads/guilt/$1
>> + cmd git symbolic-ref HEAD refs/heads/$1
>> + cmd git update-ref -d refs/heads/guilt/$1
>> +}
>> +
>> +remove_topic() {
>> + cmd guilt pop -a
>> + if git rev-parse --verify --quiet guilt/master
>> + then
>> + cmd git checkout guilt/master
>> + else
>> + cmd git checkout master
>> + fi
>> + cmd guilt pop -a
>> + cmd git branch -d $1
>> + cmd rm -r .git/patches/$1
>> + cmd git for-each-ref
>> + cmd list_files
>> +}
>> +
>> +function fixup_time_info
>> +{
>> + touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1"
>> +}
>> +
>> +cmd setup_repo
>> +
>> +cmd guilt push -a
>> +cmd list_files
>> +cmd git for-each-ref
>> +
>> +# Pop and push patches. Check that the repo is converted to new-style
>> +# refs when no patches are applied and a patch is pushed.
>> +old_style_branch master
>> +cmd git for-each-ref
>> +
>> +cmd list_files
>> +
>> +for i in `seq 5`
>> +do
>> + cmd guilt pop
>> + cmd git for-each-ref
>> + cmd guilt push
>> + cmd git for-each-ref
>> + cmd guilt pop
>> + cmd git for-each-ref
>> +done
>> +
>> +# Check that "pop -a" does the right thing.
>> +cmd guilt push -a
>> +
>> +old_style_branch master
>> +
>> +cmd git for-each-ref
>> +
>> +cmd guilt pop -a
>> +
>> +cmd git for-each-ref
>> +
>> +# Check that pushing two patches converts the repo to now-style (since
>> +# it currently has no patches applied).
>> +cmd guilt push add
>> +cmd git for-each-ref
>> +
>> +# Check guilt branch with a few patches applied.
>> +old_style_branch master
>> +cmd guilt branch topic
>> +cmd git for-each-ref
>> +
>> +# Check that the topic branch is converted to new-style.
>> +cmd guilt pop -a
>> +cmd guilt push
>> +cmd git for-each-ref
>> +
>> +remove_topic topic
>> +
>> +# Check guilt branch with the full patch series applied.
>> +cmd guilt push -a
>> +old_style_branch master
>> +cmd guilt branch topic
>> +cmd git for-each-ref
>> +
>> +remove_topic topic
>> +
>> +# Check guilt branch with no patches applied.
>> +# This gives us a new-style checkout.
>> +cmd guilt branch topic
>> +cmd git for-each-ref
>> +cmd list_files
>> +
>> +remove_topic topic
>> +
>> +# Check guilt branch in a new-style directory with all patches
>> +# applied. (Strictly speaking, this test should probably move to a
>> +# file devoted to testing "guilt branch".)
>> +cmd guilt push -a
>> +cmd guilt branch topic
>> +cmd git for-each-ref
>> +cmd list_files
>> +cmd guilt pop -a
>> +cmd git for-each-ref
>> +
>> +remove_topic topic
>> +
>> +# Check that "guilt new" does the right thing when no patches are
>> +# applied. (Strictly speaking, this test should maybe move to
>> +# t-025.sh).
>> +
>> +cmd guilt new newpatch
>> +cmd git for-each-ref '--format=%(refname)'
>> +cmd guilt pop
>> +fixup_time_info newpatch
>> +cmd guilt push
>> +cmd git for-each-ref
>> +
>> +# Check that "guilt commit" does the right thing when committing all
>> +# applied patches. (Strictly speaking, this test should maybe move to
>> +# t-030.sh).
>> +cmd git branch
>> +cmd guilt applied
>> +cmd guilt commit -a
>> +cmd git for-each-ref
>> +cmd git branch
>> +
>> +# Check that "guilt commit" does the right thing when committing only
>> +# a few of the applied patches. (Strictly speaking, this test should
>> +# maybe move to t-030.sh).
>> +cmd guilt push -a
>> +cmd guilt applied
>> +cmd git branch
>> +cmd git for-each-ref
>> +cmd guilt commit -n 2
>> +cmd git for-each-ref
>> +cmd git branch
>> +cmd guilt commit -n 2
>> +cmd git for-each-ref
>> +cmd git branch
>> +cmd guilt series
>> --
>> 1.7.10
>>
>
prev parent reply other threads:[~2012-05-02 6:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-30 10:24 [GUILT] [PATCH] Change git branch when patches are applied Per Cederqvist
2012-04-30 15:02 ` Jeff Sipek
2012-05-02 6:41 ` Per Cederqvist [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FA0D736.6080107@opera.com \
--to=cederp@opera.com \
--cc=ceder@lysator.liu.se \
--cc=git@vger.kernel.org \
--cc=jeffpc@josefsipek.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).