{"thread":{"id":"32645","subject":"[PATCH 0/7] guilt patches, including git 1.8 support","startedAt":"2013-01-16T02:26:06Z","lastAt":"2013-01-27T14:38:58Z","messageCount":13,"participants":["Jonathan Nieder","Theodore Ts'o","Josef 'Jeff' Sipek","Per Cederqvist"],"isPatch":true,"patchVersion":1,"patchTotal":7},"messages":[{"id":"207008","messageId":"20130116022606.GI12524@google.com","threadId":"32645","inReplyTo":null,"subject":"[PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:26:06Z","receivedAt":"2013-01-16T02:26:06Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi Jeff and other guilty parties,\n\nI collected all the guilt patches I could find on-list and added one\nof my own.  Completely untested, except for running the regression\ntests.  These are also available via git protocol from\n\n  git://repo.or.cz/guilt/mob.git mob\n\nThoughts?\n\nJonathan Nieder (1):\n  Drop unneeded git version check.\n\nPer Cederqvist (6):\n  get rid of \"cat: write error: Broken pipe\" error message\n  The tests should not fail if log.date or log.decorate are set.\n  Testsuite: get rid of \"Broken pipe\" errors from yes.\n  Handle empty patches and patches with only a header.\n  Fix fatal \"guilt graph\" error in sha1sum invocation.\n  Change git branch when patches are applied.\n\n Documentation/guilt.7 |   4 +\n guilt                 |  73 +++++---\n guilt-branch          |  12 +-\n guilt-commit          |   7 +\n guilt-import-commit   |   4 +-\n guilt-repair          |   7 +-\n os.Darwin             |   7 +-\n os.Linux              |   7 +-\n os.SunOS              |   7 +-\n regression/scaffold   |   7 +-\n regression/t-029.sh   |   6 +-\n regression/t-052.out  |  24 +--\n regression/t-052.sh   |   7 +-\n regression/t-061.out  | 468 ++++++++++++++++++++++++++++++++++++++++++++++++++\n regression/t-061.sh   | 148 ++++++++++++++++\n 15 files changed, 743 insertions(+), 45 deletions(-)\n create mode 100644 regression/t-061.out\n create mode 100755 regression/t-061.sh\n"},{"id":"207009","messageId":"20130116022701.GJ12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 1/7] get rid of \"cat: write error: Broken pipe\" error message","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:27:01Z","receivedAt":"2013-01-16T02:27:01Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Tue, 13 Mar 2012 14:39:44 +0100\n\nIn some circumstances (like running guilt in a M-x shell buffer in\nEmacs) cat may give the above error message when the reader of the\noutput from cat exits without reading all input from cat.  (In other\ncircumstances cat is just silently terminated with SIGPIPE.)\n\nGet rid of the error by removing the useless use of cat in\ndo_get_header and do_get_full_header.\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nAcked-by: Jeff Sipek <jeffpc@josefsipek.net>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n guilt | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/guilt b/guilt\nindex d1e17d4..7f6806e 100755\n--- a/guilt\n+++ b/guilt\n@@ -359,7 +359,7 @@ do_get_header()\n \t# 4th line skips any empty lines thereafter.\n \t# 5th line turns off empty line skip upon seeing a non-empty line.\n \t# 6th line terminates execution when we encounter the diff\n-\tcat \"$1\" | awk '\n+\tawk '\n BEGIN{body=0; subj=0}\n /^Subject:/ && (body == 0 && subj == 0){subj=1; print substr($0, 10) \"\\n\"; next}\n /^(Subject:|From:|Author:|Date:|commit)/ && (body == 0){next}\n@@ -369,7 +369,7 @@ BEGIN{body=0; subj=0}\n /^(diff |---$|--- )/{exit}\n {print $0}\n END{}\n-'\n+' < \"$1\"\n }\n \n # usage: do_get_full_header patchfile\n@@ -377,12 +377,12 @@ do_get_full_header()\n {\n \t# 2nd line checks for the begining of a patch\n \t# 3rd line outputs the line if it didn't get pruned by the above rules\n-\tcat \"$1\" | awk '\n+\tawk '\n BEGIN{}\n /^(diff |---$|--- )/{exit}\n {print $0}\n END{}\n-'\n+' < \"$1\"\n }\n \n # usage: assert_head_check\n-- \n1.8.1\n"},{"id":"207010","messageId":"20130116022733.GK12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 2/7] The tests should not fail if log.date or log.decorate are set.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:27:33Z","receivedAt":"2013-01-16T02:27:33Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Mon, 30 Apr 2012 12:25:49 +0200\n\nExplicitly set log.date and log.decorate to their Git default values,\nso that git produces the expected output even if log.date and\nlog.decorate are set by the user in his .gitconfig.\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nAcked-by: Jeff Sipek <jeffpc@josefsipek.net>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n regression/scaffold | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/regression/scaffold b/regression/scaffold\nindex 8769058..9db79a9 100644\n--- a/regression/scaffold\n+++ b/regression/scaffold\n@@ -82,6 +82,10 @@ function setup_git_repo\n \tgit add def\n \tgit commit -s -m \"initial\" 2> /dev/null > /dev/null\n \t# the commit should be d4850419ccc1146c7169f500725ce504b9774ed0\n+\n+\t# Explicitly set config that the tests rely on.\n+\tgit config log.date default\n+\tgit config log.decorate no\n }\n \n function setup_guilt_repo\n-- \n1.8.1\n"},{"id":"207011","messageId":"20130116022801.GL12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 3/7] Testsuite: get rid of \"Broken pipe\" errors from yes.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:28:01Z","receivedAt":"2013-01-16T02:28:01Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Mon, 30 Apr 2012 12:27:21 +0200\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nAcked-by: Jeff Sipek <jeffpc@josefsipek.net>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n regression/t-029.sh | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/regression/t-029.sh b/regression/t-029.sh\nindex 83e1d2b..09450c6 100755\n--- a/regression/t-029.sh\n+++ b/regression/t-029.sh\n@@ -21,11 +21,11 @@ echo | shouldfail guilt repair --full\n \n cmd list_files\n \n-yes n | shouldfail guilt repair --full\n+yes n 2>/dev/null | shouldfail guilt repair --full\n \n cmd list_files\n \n-yes y | cmd guilt repair --full\n+yes y 2>/dev/null | cmd guilt repair --full\n \n cmd list_files\n \n@@ -33,6 +33,6 @@ cmd guilt push -a\n \n cmd list_files\n \n-yes Y | cmd guilt repair --full\n+yes Y 2>/dev/null | cmd guilt repair --full\n \n cmd list_files\n-- \n1.8.1\n"},{"id":"207012","messageId":"20130116022827.GM12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 4/7] Handle empty patches and patches with only a header.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:28:27Z","receivedAt":"2013-01-16T02:28:27Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Mon, 30 Apr 2012 12:29:55 +0200\n\n\"git apply --numstat\" in Git 1.7.10 gives an error message unless the\npatch contains a diff, so don't attempt to apply it unless we find a\n'^diff'.\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nAcked-by: Jeff Sipek <jeffpc@josefsipek.net>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n guilt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/guilt b/guilt\nindex 7f6806e..5bcc498 100755\n--- a/guilt\n+++ b/guilt\n@@ -611,7 +611,7 @@ push_patch()\n \t\tcd_to_toplevel\n \n \t\t# apply the patch if and only if there is something to apply\n-\t\tif [ `git apply --numstat \"$p\" | wc -l` -gt 0 ]; then\n+\t\tif grep -q '^diff ' \"$p\" && [ `git apply --numstat \"$p\" | wc -l` -gt 0 ]; then\n \t\t\tif [ \"$bail_action\" = abort ]; then\n \t\t\t\treject=\"\"\n \t\t\tfi\n-- \n1.8.1\n"},{"id":"207013","messageId":"20130116022913.GN12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 5/7] Fix fatal \"guilt graph\" error in sha1sum invocation.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:29:13Z","receivedAt":"2013-01-16T02:29:13Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Wed, 14 Mar 2012 14:34:38 +0100\n\nFix the compatibility function sha1 so that it reads from\nstdin (and not a file with a zero-length file name) when\nno argument is supplied.\n\n[jn: adapted to also handle newer versions of OpenSSL,\n based on reports from Andreas Schwab and John Szakmeister.\n\n $ openssl dgst -sha1</dev/null\n da39a3ee5e6b4b0d3255bfef95601890afd80709\n $ openssl version\n OpenSSL 0.9.8o 01 Jun 2010\n\n $ openssl dgst -sha1 </dev/null\n (stdin)= da39a3ee5e6b4b0d3255bfef95601890afd80709\n $ openssl version\n OpenSSL 1.0.0d 8 Feb 2011\n]\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n os.Darwin | 7 ++++++-\n os.Linux  | 7 ++++++-\n os.SunOS  | 7 ++++++-\n 3 files changed, 18 insertions(+), 3 deletions(-)\n\ndiff --git a/os.Darwin b/os.Darwin\nindex 470f5fb..3f23121 100644\n--- a/os.Darwin\n+++ b/os.Darwin\n@@ -27,7 +27,12 @@ head_n()\n # usage: sha1 [file]\n sha1()\n {\n-\topenssl dgst -sha1 \"$1\" | sed \"s,SHA1.\\(.*\\).= \\(.*\\),\\2  \\1,\"\n+\tif [ $# = 1 ]\n+\tthen\n+\t\topenssl dgst -sha1 \"$1\" | sed \"s,SHA1.\\(.*\\).= \\(.*\\),\\2  \\1,\"\n+\telse\n+\t\topenssl dgst -sha1 | sed 's,\\(.*= \\)*\\(.*\\),\\2  -,'\n+\tfi\n }\n \n # usage: cp_a <src> <dst>\ndiff --git a/os.Linux b/os.Linux\nindex 30b9cb0..aaebf88 100644\n--- a/os.Linux\n+++ b/os.Linux\n@@ -30,7 +30,12 @@ head_n()\n # usage: sha1 [file]\n sha1()\n {\n-\tsha1sum \"$1\"\n+\tif [ $# = 1 ]\n+\tthen\n+\t\tsha1sum \"$1\"\n+\telse\n+\t\tsha1sum\n+\tfi\n }\n \n # usage: cp_a <src> <dst>\ndiff --git a/os.SunOS b/os.SunOS\nindex 30b9cb0..aaebf88 100644\n--- a/os.SunOS\n+++ b/os.SunOS\n@@ -30,7 +30,12 @@ head_n()\n # usage: sha1 [file]\n sha1()\n {\n-\tsha1sum \"$1\"\n+\tif [ $# = 1 ]\n+\tthen\n+\t\tsha1sum \"$1\"\n+\telse\n+\t\tsha1sum\n+\tfi\n }\n \n # usage: cp_a <src> <dst>\n-- \n1.8.1\n"},{"id":"207014","messageId":"20130116023036.GO12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 6/7] Change git branch when patches are applied.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:30:36Z","receivedAt":"2013-01-16T02:30:36Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Per Cederqvist <cederp@opera.com>\nDate: Mon, 30 Apr 2012 12:24:06 +0200\n\nApply patches on a separate branch. The separate branch is\nautomatically created when Guilt pushes something, and removed when no\npatches are applied. The name is formed by prepending \"guilt/\" to the\noriginal branch.\n\nThis breaks the \"upstream\" relationship, so a mistaken \"git push\"\nwhile patches are applied will no longer mess up your upstream\nrepository.\n\nUpdate the testsuite and documentation.\n\nThanks to Junio C Hamano for suggesting this solution to my problem.\n\nSigned-off-by: Per Cederqvist <cederp@opera.com>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThis one was a bit experimental if I remember correctly, so you may\nwant to skip it or make the feature optional.\n\n Documentation/guilt.7 |   4 +\n guilt                 |  52 +++++-\n guilt-branch          |  12 +-\n guilt-commit          |   7 +\n guilt-import-commit   |   4 +-\n guilt-repair          |   7 +-\n regression/scaffold   |   3 +-\n regression/t-052.out  |  24 +--\n regression/t-052.sh   |   7 +-\n regression/t-061.out  | 468 ++++++++++++++++++++++++++++++++++++++++++++++++++\n regression/t-061.sh   | 148 ++++++++++++++++\n 11 files changed, 713 insertions(+), 23 deletions(-)\n create mode 100644 regression/t-061.out\n create mode 100755 regression/t-061.sh\n\ndiff --git a/Documentation/guilt.7 b/Documentation/guilt.7\nindex 860e6d6..c3fdb3d 100644\n--- a/Documentation/guilt.7\n+++ b/Documentation/guilt.7\n@@ -43,6 +43,10 @@ guards: This file contains any guards that should be applied to the series when\n 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\\&.\n \n status: This file contains the state of the stack\\&. What patches are applied\\&.\n+.SH \"BRANCH USAGE\"\n+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\\&.\n+\n+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.\n .SH \"HOOKS\"\n 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\\&.\n .SH \"HOOKS DIRECTORY\"\ndiff --git a/guilt b/guilt\nindex 5bcc498..66a671a 100755\n--- a/guilt\n+++ b/guilt\n@@ -408,9 +408,9 @@ head_check()\n \t\t\treturn 0 ;;\n \tesac\n \n-\tif [ \"`git rev-parse refs/heads/$branch`\" != \"`git rev-parse $1`\" ]; then\n+\tif [ \"`git rev-parse refs/heads/\\`git_branch\\``\" != \"`git rev-parse $1`\" ]; then\n \t\tdisp \"Expected HEAD commit $1\" >&2\n-\t\tdisp \"                 got `git rev-parse refs/heads/$branch`\" >&2\n+\t\tdisp \"                 got `git rev-parse refs/heads/\\`git_branch\\``\" >&2\n \t\treturn 1\n \tfi\n \treturn 0\n@@ -500,6 +500,11 @@ pop_many_patches()\n \t\tn=`expr $n - $2`\n \t\thead_n \"$n\" < \"$applied\" > \"$applied.tmp\"\n \t\tmv \"$applied.tmp\" \"$applied\"\n+\t\tif [ -z \"`get_top 2>/dev/null`\" ] && [ \"`git symbolic-ref HEAD`\" = \"refs/heads/$GUILT_PREFIX$branch\" ] && ! $old_style_prefix\n+\t\tthen\n+\t\t\tgit symbolic-ref HEAD refs/heads/$branch\n+\t\t\tgit update-ref -d refs/heads/$GUILT_PREFIX$branch\n+\t\tfi\n \t)\n }\n \n@@ -585,7 +590,13 @@ commit()\n \t\t# commit\n \t\ttreeish=`git write-tree`\n \t\tcommitish=`git commit-tree $treeish -p $2 < \"$TMP_MSG\"`\n-\t\tgit update-ref HEAD $commitish\n+\t\tif $old_style_prefix || git rev-parse --verify --quiet refs/heads/$GUILT_PREFIX$branch >/dev/null\n+\t\tthen\n+\t\t\tgit update-ref HEAD $commitish\n+\t\telse\n+\t\t\tgit branch $GUILT_PREFIX$branch $commitish\n+\t\t\tgit symbolic-ref HEAD refs/heads/$GUILT_PREFIX$branch\n+\t\tfi\n \n \t\t# mark patch as applied\n \t\tgit update-ref \"refs/patches/$branch/$pname\" HEAD\n@@ -825,6 +836,9 @@ guilt_push_diff_context=1\n # default diffstat value: true or false\n DIFFSTAT_DEFAULT=\"false\"\n \n+# Prefix for guilt branches.\n+GUILT_PREFIX=guilt/\n+\n #\n # Parse any part of .git/config that belongs to us\n #\n@@ -839,7 +853,28 @@ diffstat=`git config --bool guilt.diffstat`\n \n GUILT_DIR=\"$GIT_DIR/patches\"\n \n-branch=`get_branch`\n+# To make it harder to accidentally do \"git push\" with a guilt patch\n+# applied, \"guilt push\" changes branch from e.g. \"master\" to\n+# \"guilt/master\".  Set $git_branch to the full branch name, and\n+# $branch to the abbreviated name that the user sees most of the time.\n+# Note: old versions of guilt did not add the \"guilt/\" prefix.  This\n+# code handles that case as well.  The prefix will be added when you\n+# have no patches applied and do a \"guilt push\".\n+raw_git_branch=`get_branch`\n+branch=`echo \"$raw_git_branch\" | sed -e 's,^'$GUILT_PREFIX',,'`\n+\n+git_branch()\n+{\n+\tif $old_style_prefix\n+\tthen\n+\t\techo $branch\n+\telif [ -z \"`get_top 2>/dev/null`\" ]\n+\tthen\n+\t\techo $branch\n+\telse\n+\t\techo $GUILT_PREFIX$branch\n+\tfi\n+}\n \n # most of the time we want to verify that the repo's branch has been\n # initialized, but every once in a blue moon (e.g., we want to run guilt init),\n@@ -876,4 +911,13 @@ else\n \tdie \"Unsupported operating system: $UNAME_S\"\n fi\n \n+if [ \"$branch\" = \"$raw_git_branch\" ] && [ -n \"`get_top 2>/dev/null`\" ]\n+then\n+    # This is for compat with old repositories that still have a\n+    # pushed patch without the new-style branch prefix.\n+    old_style_prefix=true\n+else\n+    old_style_prefix=false\n+fi\n+\n _main \"$@\"\ndiff --git a/guilt-branch b/guilt-branch\nindex 909f740..4a1f53e 100755\n--- a/guilt-branch\n+++ b/guilt-branch\n@@ -35,8 +35,16 @@ cat \"$applied\" | while read n; do\n \t\t`git rev-parse \"refs/patches/$branch/$n\"` \"\"\n done\n \n-git branch \"$newbranch\"\n-git checkout \"$newbranch\"\n+if $old_style_prefix || [ -z \"`get_top 2>/dev/null`\" ]\n+then\n+\tnewgitbranch=\"$newbranch\"\n+else\n+\tgit update-ref \"refs/heads/$newbranch\" \"refs/heads/$branch\" \"\"\n+\tnewgitbranch=\"$GUILT_PREFIX$newbranch\"\n+fi\n+\n+git branch \"$newgitbranch\"\n+git checkout \"$newgitbranch\"\n \n mkdir -p \"$GUILT_DIR/`dirname $newbranch`\"\n \ndiff --git a/guilt-commit b/guilt-commit\nindex 4228be6..e425399 100755\n--- a/guilt-commit\n+++ b/guilt-commit\n@@ -43,4 +43,11 @@ done\n sed -n -e \"${pat_keep}\" \"$applied\" > \"$applied.tmp\"\n mv \"$applied.tmp\" \"$applied\"\n \n+# if we removed the last patch, switch back to the base branch\n+if [ `wc -l < \"$applied\"` -eq 0 ] && [ \"`git symbolic-ref HEAD`\" = \"refs/heads/$GUILT_PREFIX$branch\" ] && ! $old_style_prefix\n+then\n+\tgit update-ref refs/heads/$branch refs/heads/$GUILT_PREFIX$branch\n+\tgit symbolic-ref HEAD refs/heads/$branch\n+\tgit update-ref -d refs/heads/$GUILT_PREFIX$branch\n+fi\n }\ndiff --git a/guilt-import-commit b/guilt-import-commit\nindex 3045a5f..54c1de0 100755\n--- a/guilt-import-commit\n+++ b/guilt-import-commit\n@@ -23,7 +23,7 @@ if ! must_commit_first; then\n fi\n \n disp \"About to begin conversion...\" >&2\n-disp \"Current head: `cat $GIT_DIR/refs/heads/$branch`\" >&2\n+disp \"Current head: `cat $GIT_DIR/refs/heads/\\`git_branch\\``\" >&2\n \n for rev in `git rev-list $rhash`; do\n \ts=`git log --pretty=oneline -1 $rev | cut -c 42-`\n@@ -68,6 +68,6 @@ for rev in `git rev-list $rhash`; do\n done\n \n disp \"Done.\" >&2\n-disp \"Current head: `cat $GIT_DIR/refs/heads/$branch`\" >&2\n+disp \"Current head: `cat $GIT_DIR/refs/heads/\\`git_branch\\``\" >&2\n \n }\ndiff --git a/guilt-repair b/guilt-repair\nindex 77ad223..c0bf3ed 100755\n--- a/guilt-repair\n+++ b/guilt-repair\n@@ -84,6 +84,11 @@ repair_pushed()\n \n \t# blow away any commits\n \tgit reset --hard \"$newrev\" > /dev/null\n+\tif [ \"`git symbolic-ref HEAD`\" = \"refs/heads/$GUILT_PREFIX$branch\" ] && ! $old_style_prefix\n+\tthen\n+\t\tgit symbolic-ref HEAD refs/heads/$branch\n+\t\tgit update-ref -d refs/heads/$GUILT_PREFIX$branch\n+\tfi\n \n \t# blow away the applied stack\n \tremove_patch_refs < \"$applied\"\n@@ -112,7 +117,7 @@ case \"$1\" in\n \t\t;;\n esac\n \n-oldrev=`git show-ref -s \"refs/heads/$branch\"`\n+oldrev=`git show-ref -s \"refs/heads/\\`git_branch\\`\"`\n \n case \"$repair\" in\n \tfull)\ndiff --git a/regression/scaffold b/regression/scaffold\nindex 9db79a9..546d8c6 100644\n--- a/regression/scaffold\n+++ b/regression/scaffold\n@@ -38,7 +38,8 @@ function replace_path\n \t    -e \"s,^Usage: guilt-,Usage: guilt ,g\" \\\n \t    -e \"s,\\.\\.\\. initial, initial,g\" \\\n \t    -e \"s,^Already on\\( branch\\)\\? [\\\"']\\([^\\\"']*\\)[\\\"']$,Already on \\\"\\2\\\",g\" \\\n-\t    -e \"s,^Switched to branch [\\\"']\\([^\\\"']*\\)[\\\"'],Switched to branch \\\"\\1\\\",g\"\n+\t    -e \"s,^Switched to branch [\\\"']\\([^\\\"']*\\)[\\\"'],Switched to branch \\\"\\1\\\",g\" \\\n+\t    -e \"\\\\,^Deleted branch guilt/.* (was .*).$,d\"\n }\n \n function filter_dd\ndiff --git a/regression/t-052.out b/regression/t-052.out\nindex 3b4a629..8205f35 100644\n--- a/regression/t-052.out\n+++ b/regression/t-052.out\n@@ -47,7 +47,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n Applying patch..modify\n Patch applied.\n % guilt branch br-modify\n-Switched to branch \"br-modify\"\n+Switched to branch \"guilt/br-modify\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -76,8 +76,8 @@ f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/br-/status\n r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/br-modify/modify\n r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n-% git checkout master\n-Switched to branch \"master\"\n+% git checkout guilt/master\n+Switched to branch \"guilt/master\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -109,7 +109,7 @@ r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n Applying patch..add\n Patch applied.\n % guilt branch br-add\n-Switched to branch \"br-add\"\n+Switched to branch \"guilt/br-add\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -149,8 +149,8 @@ r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/br-modify/modify\n r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/br-add/add\n r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n-% git checkout master\n-Switched to branch \"master\"\n+% git checkout guilt/master\n+Switched to branch \"guilt/master\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -193,7 +193,7 @@ r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n Applying patch..remove\n Patch applied.\n % guilt branch br-remove\n-Switched to branch \"br-remove\"\n+Switched to branch \"guilt/br-remove\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -245,8 +245,8 @@ r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/br-remove/add\n r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/br-remove/remove\n r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n-% git checkout master\n-Switched to branch \"master\"\n+% git checkout guilt/master\n+Switched to branch \"guilt/master\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -301,7 +301,7 @@ r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n Applying patch..mode\n Patch applied.\n % guilt branch br-mode\n-Switched to branch \"br-mode\"\n+Switched to branch \"guilt/br-mode\"\n % list_files\n d .git/patches\n d .git/patches/br-\n@@ -366,5 +366,5 @@ r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode\n r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/br-mode/remove\n r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/br-remove/remove\n r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n-% git checkout master\n-Switched to branch \"master\"\n+% git checkout guilt/master\n+Switched to branch \"guilt/master\"\ndiff --git a/regression/t-052.sh b/regression/t-052.sh\nindex e9c1a59..05bc55b 100755\n--- a/regression/t-052.sh\n+++ b/regression/t-052.sh\n@@ -12,5 +12,10 @@ for x in \"\" modify add remove mode ; do\n \t[ \"$x\" != \"\" ] && guilt push \"$x\"\n \tcmd guilt branch br-$x\n \tcmd list_files\n-\tcmd git checkout master\n+\tif [ \"$x\" != \"\" ]\n+\tthen\n+\t    cmd git checkout guilt/master\n+\telse\n+\t    cmd git checkout master\n+\tfi\n done\ndiff --git a/regression/t-061.out b/regression/t-061.out\nnew file mode 100644\nindex 0000000..8365236\n--- /dev/null\n+++ b/regression/t-061.out\n@@ -0,0 +1,468 @@\n+% setup_repo\n+% guilt push -a\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+Applying patch..remove\n+Patch applied.\n+Applying patch..mode\n+Patch applied.\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode\n+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% git update-ref refs/heads/master refs/heads/guilt/master\n+% git symbolic-ref HEAD refs/heads/master\n+% git update-ref -d refs/heads/guilt/master\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode\n+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n+% guilt pop\n+Now at remove.\n+% git for-each-ref\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt push\n+Applying patch..mode\n+Patch applied.\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt pop\n+Now at remove.\n+% git for-each-ref\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt pop\n+Now at add.\n+% git for-each-ref\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt push\n+Applying patch..remove\n+Patch applied.\n+% git for-each-ref\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt pop\n+Now at add.\n+% git for-each-ref\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt pop\n+Now at modify.\n+% git for-each-ref\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/heads/master\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt push\n+Applying patch..add\n+Patch applied.\n+% git for-each-ref\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt pop\n+Now at modify.\n+% git for-each-ref\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/heads/master\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt pop\n+All patches popped.\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% guilt push\n+Applying patch..modify\n+Patch applied.\n+% git for-each-ref\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt pop\n+All patches popped.\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% guilt pop\n+No patches applied.\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% guilt push\n+Applying patch..modify\n+Patch applied.\n+% git for-each-ref\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% guilt pop\n+All patches popped.\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% guilt push -a\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+Applying patch..remove\n+Patch applied.\n+Applying patch..mode\n+Patch applied.\n+% git update-ref refs/heads/master refs/heads/guilt/master\n+% git symbolic-ref HEAD refs/heads/master\n+% git update-ref -d refs/heads/guilt/master\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt pop -a\n+All patches popped.\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% guilt push add\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+% git for-each-ref\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+% git update-ref refs/heads/master refs/heads/guilt/master\n+% git symbolic-ref HEAD refs/heads/master\n+% git update-ref -d refs/heads/guilt/master\n+% guilt branch topic\n+Switched to branch \"topic\"\n+% git for-each-ref\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/master\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/topic/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/topic/modify\n+% guilt pop -a\n+All patches popped.\n+% guilt push\n+Applying patch..modify\n+Patch applied.\n+% git for-each-ref\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/heads/guilt/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/heads/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/topic/modify\n+% guilt pop -a\n+All patches popped.\n+% git checkout master\n+Switched to branch \"master\"\n+% guilt pop -a\n+All patches popped.\n+% git branch -d topic\n+Deleted branch topic (was d485041).\n+% rm -r .git/patches/topic\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n+% guilt push -a\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+Applying patch..remove\n+Patch applied.\n+Applying patch..mode\n+Patch applied.\n+% git update-ref refs/heads/master refs/heads/guilt/master\n+% git symbolic-ref HEAD refs/heads/master\n+% git update-ref -d refs/heads/guilt/master\n+% guilt branch topic\n+Switched to branch \"topic\"\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/master\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/topic/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/topic/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/topic/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/topic/remove\n+% guilt pop -a\n+All patches popped.\n+% git checkout master\n+Switched to branch \"master\"\n+% guilt pop -a\n+All patches popped.\n+% git branch -d topic\n+Deleted branch topic (was d485041).\n+% rm -r .git/patches/topic\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n+% guilt branch topic\n+Switched to branch \"topic\"\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/topic\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/patches/topic\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/topic/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/topic/remove\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/topic/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/topic/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/topic/modify\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/topic/status\n+% guilt pop -a\n+No patches applied.\n+% git checkout master\n+Switched to branch \"master\"\n+% guilt pop -a\n+No patches applied.\n+% git branch -d topic\n+Deleted branch topic (was d485041).\n+% rm -r .git/patches/topic\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n+% guilt push -a\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+Applying patch..remove\n+Patch applied.\n+Applying patch..mode\n+Patch applied.\n+% guilt branch topic\n+Switched to branch \"guilt/topic\"\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/guilt/master\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/guilt/topic\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/topic/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/topic/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/topic/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/topic/remove\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/patches/topic\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/topic/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/topic/remove\n+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status\n+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/topic/status\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/topic/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/topic/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/topic/modify\n+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify\n+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/topic/modify\n+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add\n+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/topic/add\n+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode\n+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/topic/mode\n+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove\n+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/topic/remove\n+% guilt pop -a\n+All patches popped.\n+% git for-each-ref\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/topic\n+37d588cc39848368810e88332bd03b083f2ce3ac commit\trefs/patches/master/add\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit\trefs/patches/master/mode\n+33633e7a1aa31972f125878baf7807be57b1672d commit\trefs/patches/master/modify\n+ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit\trefs/patches/master/remove\n+% guilt pop -a\n+No patches applied.\n+ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba\n+% git checkout guilt/master\n+Switched to branch \"guilt/master\"\n+% guilt pop -a\n+All patches popped.\n+% git branch -d topic\n+Deleted branch topic (was d485041).\n+% rm -r .git/patches/topic\n+% git for-each-ref\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+% list_files\n+d .git/patches\n+d .git/patches/master\n+d .git/refs/patches\n+d .git/refs/patches/master\n+d .git/refs/patches/topic\n+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode\n+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove\n+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add\n+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series\n+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify\n+f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/status\n+% guilt new newpatch\n+% git for-each-ref --format=%(refname)\n+refs/heads/guilt/master\n+refs/heads/master\n+refs/patches/master/newpatch\n+% guilt pop\n+All patches popped.\n+% guilt push\n+Applying patch..newpatch\n+Patch applied.\n+% git for-each-ref\n+25465dc1687f3833ecbd4e8bca437e522d7026db commit\trefs/heads/guilt/master\n+d4850419ccc1146c7169f500725ce504b9774ed0 commit\trefs/heads/master\n+25465dc1687f3833ecbd4e8bca437e522d7026db commit\trefs/patches/master/newpatch\n+% git branch\n+* guilt/master\n+  master\n+% guilt applied\n+newpatch\n+% guilt commit -a\n+% git for-each-ref\n+25465dc1687f3833ecbd4e8bca437e522d7026db commit\trefs/heads/master\n+% git branch\n+* master\n+% guilt push -a\n+Applying patch..modify\n+Patch applied.\n+Applying patch..add\n+Patch applied.\n+Applying patch..remove\n+Patch applied.\n+Applying patch..mode\n+Patch applied.\n+% guilt applied\n+modify\n+add\n+remove\n+mode\n+% git branch\n+* guilt/master\n+  master\n+% git for-each-ref\n+fefbdcef61022d473838926619f31e030dd04fdc commit\trefs/heads/guilt/master\n+25465dc1687f3833ecbd4e8bca437e522d7026db commit\trefs/heads/master\n+5effcbeb303e8433935151d8c69f3bf63db1e8ef commit\trefs/patches/master/add\n+fefbdcef61022d473838926619f31e030dd04fdc commit\trefs/patches/master/mode\n+9509f22e2e627756d87b42432931c45955b74234 commit\trefs/patches/master/modify\n+9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit\trefs/patches/master/remove\n+% guilt commit -n 2\n+% git for-each-ref\n+fefbdcef61022d473838926619f31e030dd04fdc commit\trefs/heads/guilt/master\n+25465dc1687f3833ecbd4e8bca437e522d7026db commit\trefs/heads/master\n+fefbdcef61022d473838926619f31e030dd04fdc commit\trefs/patches/master/mode\n+9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit\trefs/patches/master/remove\n+% git branch\n+* guilt/master\n+  master\n+% guilt commit -n 2\n+% git for-each-ref\n+fefbdcef61022d473838926619f31e030dd04fdc commit\trefs/heads/master\n+% git branch\n+* master\n+% guilt series\ndiff --git a/regression/t-061.sh b/regression/t-061.sh\nnew file mode 100755\nindex 0000000..1411baa\n--- /dev/null\n+++ b/regression/t-061.sh\n@@ -0,0 +1,148 @@\n+#!/bin/bash\n+#\n+# Test the branch-switching upgrade code\n+#\n+\n+source $REG_DIR/scaffold\n+\n+old_style_branch() {\n+\t# Modify the refs so that it looks as if the patch series was applied\n+\t# by an old version of guilt.\n+\tcmd git update-ref refs/heads/$1 refs/heads/guilt/$1\n+\tcmd git symbolic-ref HEAD refs/heads/$1\n+\tcmd git update-ref -d refs/heads/guilt/$1\n+}\n+\n+remove_topic() {\n+\tcmd guilt pop -a\n+\tif git rev-parse --verify --quiet guilt/master\n+\tthen\n+\t\tcmd git checkout guilt/master\n+\telse\n+\t\tcmd git checkout master\n+\tfi\n+\tcmd guilt pop -a\n+\tcmd git branch -d $1\n+\tcmd rm -r .git/patches/$1\n+\tcmd git for-each-ref\n+\tcmd list_files\n+}\n+\n+function fixup_time_info\n+{\n+\ttouch -a -m -t \"$TOUCH_DATE\" \".git/patches/master/$1\"\n+}\n+\n+cmd setup_repo\n+\n+cmd guilt push -a\n+cmd list_files\n+cmd git for-each-ref\n+\n+# Pop and push patches.  Check that the repo is converted to new-style\n+# refs when no patches are applied and a patch is pushed.\n+old_style_branch master\n+cmd git for-each-ref\n+\n+cmd list_files\n+\n+for i in `seq 5`\n+do\n+\tcmd guilt pop\n+\tcmd git for-each-ref\n+\tcmd guilt push\n+\tcmd git for-each-ref\n+\tcmd guilt pop\n+\tcmd git for-each-ref\n+done\n+\n+# Check that \"pop -a\" does the right thing.\n+cmd guilt push -a\n+\n+old_style_branch master\n+\n+cmd git for-each-ref\n+\n+cmd guilt pop -a\n+\n+cmd git for-each-ref\n+\n+# Check that pushing two patches converts the repo to now-style (since\n+# it currently has no patches applied).\n+cmd guilt push add\n+cmd git for-each-ref\n+\n+# Check guilt branch with a few patches applied.\n+old_style_branch master\n+cmd guilt branch topic\n+cmd git for-each-ref\n+\n+# Check that the topic branch is converted to new-style.\n+cmd guilt pop -a\n+cmd guilt push\n+cmd git for-each-ref\n+\n+remove_topic topic\n+\n+# Check guilt branch with the full patch series applied.\n+cmd guilt push -a\n+old_style_branch master\n+cmd guilt branch topic\n+cmd git for-each-ref\n+\n+remove_topic topic\n+\n+# Check guilt branch with no patches applied.\n+# This gives us a new-style checkout.\n+cmd guilt branch topic\n+cmd git for-each-ref\n+cmd list_files\n+\n+remove_topic topic\n+\n+# Check guilt branch in a new-style directory with all patches\n+# applied.  (Strictly speaking, this test should probably move to a\n+# file devoted to testing \"guilt branch\".)\n+cmd guilt push -a\n+cmd guilt branch topic\n+cmd git for-each-ref\n+cmd list_files\n+cmd guilt pop -a\n+cmd git for-each-ref\n+\n+remove_topic topic\n+\n+# Check that \"guilt new\" does the right thing when no patches are\n+# applied.  (Strictly speaking, this test should maybe move to\n+# t-025.sh).\n+\n+cmd guilt new newpatch\n+cmd git for-each-ref '--format=%(refname)'\n+cmd guilt pop\n+fixup_time_info newpatch\n+cmd guilt push\n+cmd git for-each-ref\n+\n+# Check that \"guilt commit\" does the right thing when committing all\n+# applied patches.  (Strictly speaking, this test should maybe move to\n+# t-030.sh).\n+cmd git branch\n+cmd guilt applied\n+cmd guilt commit -a\n+cmd git for-each-ref\n+cmd git branch\n+\n+# Check that \"guilt commit\" does the right thing when committing only\n+# a few of the applied patches.  (Strictly speaking, this test should\n+# maybe move to t-030.sh).\n+cmd guilt push -a\n+cmd guilt applied\n+cmd git branch\n+cmd git for-each-ref\n+cmd guilt commit -n 2\n+cmd git for-each-ref\n+cmd git branch\n+cmd guilt commit -n 2\n+cmd git for-each-ref\n+cmd git branch\n+cmd guilt series\n-- \n1.8.1\n"},{"id":"207015","messageId":"20130116023144.GP12524@google.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"[GUILT] [PATCH 7/7] Drop unneeded git version check.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-01-16T02:31:44Z","receivedAt":"2013-01-16T02:31:44Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Git's compatibility record is pretty good, so there's no need to worry\nthat newer versions of git will break the \"git config\" command.\n\nWithout this change, guilt errors out for git 1.8.  With it, all tests\npass.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThanks for reading.\n\n guilt | 11 -----------\n 1 file changed, 11 deletions(-)\n\ndiff --git a/guilt b/guilt\nindex 66a671a..6cb43e3 100755\n--- a/guilt\n+++ b/guilt\n@@ -26,17 +26,6 @@ SUBDIRECTORY_OK=1\n . \"$(git --exec-path)/git-sh-setup\"\n \n #\n-# Git version check\n-#\n-gitver=`git --version | cut -d' ' -f3 | sed -e 's/^debian\\.//'`\n-case \"$gitver\" in\n-\t1.5.*)\t;; # git config\n-\t1.6.*)\t;; # git config\n-\t1.7.*)\t;; # git config\n-\t*)\tdie \"Unsupported version of git ($gitver)\" ;;\n-esac\n-\n-#\n # Shell library\n #\n usage()\n-- \n1.8.1\n"},{"id":"207024","messageId":"20130116032606.GA6052@thunk.org","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"Re: [PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Theodore Ts'o","fromEmail":"tytso@mit.edu","sentAt":"2013-01-16T03:26:06Z","receivedAt":"2013-01-16T03:26:06Z","isPatch":true,"sender":{"key":"tytso@mit.edu","avatar":"https://avatars.githubusercontent.com/u/51416?v=4"},"body":"On Tue, Jan 15, 2013 at 06:26:06PM -0800, Jonathan Nieder wrote:\n> Hi Jeff and other guilty parties,\n> \n> I collected all the guilt patches I could find on-list and added one\n> of my own.  Completely untested, except for running the regression\n> tests.  These are also available via git protocol from\n> \n>   git://repo.or.cz/guilt/mob.git mob\n\nJonathan, thanks for collecting all of the guilt patches!  Your repro\nwas also very much really useful since I hadn't grabbed the latest\npatches from jeffpc's repo before it disappeared after the kernel.org\nsecurity shutdown.  \n\nJeff, do you need some help getting your repro on kernel.org\nre-established?\n\n\t\t\t\t\t\t\t- Ted\n"},{"id":"207055","messageId":"20130116150458.GA21612@poseidon.cudanet.local","threadId":"32645","inReplyTo":"20130116032606.GA6052@thunk.org","subject":"Re: [PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Josef 'Jeff' Sipek","fromEmail":"jeffpc@josefsipek.net","sentAt":"2013-01-16T15:04:59Z","receivedAt":"2013-01-16T15:04:59Z","isPatch":true,"sender":{"key":"jeffpc@josefsipek.net","avatar":null},"body":"On Tue, Jan 15, 2013 at 10:26:06PM -0500, Theodore Ts'o wrote:\n> On Tue, Jan 15, 2013 at 06:26:06PM -0800, Jonathan Nieder wrote:\n> > Hi Jeff and other guilty parties,\n> > \n> > I collected all the guilt patches I could find on-list and added one\n> > of my own.  Completely untested, except for running the regression\n> > tests.  These are also available via git protocol from\n> > \n> >   git://repo.or.cz/guilt/mob.git mob\n> \n> Jonathan, thanks for collecting all of the guilt patches!  Your repro\n> was also very much really useful since I hadn't grabbed the latest\n> patches from jeffpc's repo before it disappeared after the kernel.org\n> security shutdown.  \n\nI had repo.or.cz mirroring all along.  :)\n\n> Jeff, do you need some help getting your repro on kernel.org\n> re-established?\n\nYes and no.  I was hoping to find some time to restore all the web content\non my server, and start using repo.or.cz as the public git repo.  With that\nsaid, I have only two sigs for my gpg key.  (Guilt isn't really related to\nlinux...)\n\nThanks,\n\nJeff.\n\n-- \nOnly two things are infinite, the universe and human stupidity, and I'm not\nsure about the former.\n\t\t- Albert Einstein\n"},{"id":"207339","messageId":"50FC5F6B.6070103@opera.com","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"Re: [PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Per Cederqvist","fromEmail":"cederp@opera.com","sentAt":"2013-01-20T21:19:39Z","receivedAt":"2013-01-20T21:19:39Z","isPatch":true,"sender":{"key":"cederp@opera.com","avatar":"https://gravatar.com/avatar/008fe28caedea0ba34042cd5157705267934f4ba7a9b29fb248ae18ec5b3055e?d=mp&s=160"},"body":"On 01/16/13 03:26, Jonathan Nieder wrote:\n> Hi Jeff and other guilty parties,\n>\n> I collected all the guilt patches I could find on-list and added one\n> of my own.  Completely untested, except for running the regression\n> tests.  These are also available via git protocol from\n>\n>    git://repo.or.cz/guilt/mob.git mob\n>\n> Thoughts?\n\nRegarding the \"Change git branch when patches are applied\" feature,\nit has saved me a number of times since I implemented it. I've been\nusing it extensively, and have not had any problems with it.\n\nNevertheless, for backwards compatibility with the currently\nreleased guilt version I think it should be conditional, and\ndisabled per default for one full release cycle.  I've implemented\nthis. My code is available from git://repo.or.cz/guilt/ceder.git\n\nThe following commits are not included in your list:\n\na194375 Added guilt.reusebranch configuration option.\n1dd97bd Minor testsuite fix.\n640caee The tests should not fail if guilt.diffstat is set.\n\nI don't want Guilt to fork. Jeff, it would be really great if\nyou could set up a public repo again!\n\n     /ceder\n\n> Jonathan Nieder (1):\n>    Drop unneeded git version check.\n>\n> Per Cederqvist (6):\n>    get rid of \"cat: write error: Broken pipe\" error message\n>    The tests should not fail if log.date or log.decorate are set.\n>    Testsuite: get rid of \"Broken pipe\" errors from yes.\n>    Handle empty patches and patches with only a header.\n>    Fix fatal \"guilt graph\" error in sha1sum invocation.\n>    Change git branch when patches are applied.\n>\n>   Documentation/guilt.7 |   4 +\n>   guilt                 |  73 +++++---\n>   guilt-branch          |  12 +-\n>   guilt-commit          |   7 +\n>   guilt-import-commit   |   4 +-\n>   guilt-repair          |   7 +-\n>   os.Darwin             |   7 +-\n>   os.Linux              |   7 +-\n>   os.SunOS              |   7 +-\n>   regression/scaffold   |   7 +-\n>   regression/t-029.sh   |   6 +-\n>   regression/t-052.out  |  24 +--\n>   regression/t-052.sh   |   7 +-\n>   regression/t-061.out  | 468 ++++++++++++++++++++++++++++++++++++++++++++++++++\n>   regression/t-061.sh   | 148 ++++++++++++++++\n>   15 files changed, 743 insertions(+), 45 deletions(-)\n>   create mode 100644 regression/t-061.out\n>   create mode 100755 regression/t-061.sh\n>\n"},{"id":"207337","messageId":"20130120212425.GA101005@meili.valhalla.31bits.net","threadId":"32645","inReplyTo":"50FC5F6B.6070103@opera.com","subject":"Re: [PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Josef 'Jeff' Sipek","fromEmail":"jeffpc@josefsipek.net","sentAt":"2013-01-20T21:24:25Z","receivedAt":"2013-01-20T21:24:25Z","isPatch":true,"sender":{"key":"jeffpc@josefsipek.net","avatar":null},"body":"On Sun, Jan 20, 2013 at 10:19:39PM +0100, Per Cederqvist wrote:\n> On 01/16/13 03:26, Jonathan Nieder wrote:\n> >Hi Jeff and other guilty parties,\n> >\n> >I collected all the guilt patches I could find on-list and added one\n> >of my own.  Completely untested, except for running the regression\n> >tests.  These are also available via git protocol from\n> >\n> >   git://repo.or.cz/guilt/mob.git mob\n> >\n> >Thoughts?\n> \n> Regarding the \"Change git branch when patches are applied\" feature,\n> it has saved me a number of times since I implemented it. I've been\n> using it extensively, and have not had any problems with it.\n> \n> Nevertheless, for backwards compatibility with the currently\n> released guilt version I think it should be conditional, and\n> disabled per default for one full release cycle.  I've implemented\n> this. My code is available from git://repo.or.cz/guilt/ceder.git\n> \n> The following commits are not included in your list:\n> \n> a194375 Added guilt.reusebranch configuration option.\n> 1dd97bd Minor testsuite fix.\n> 640caee The tests should not fail if guilt.diffstat is set.\n\nAt $WORK, we started doing thorough reviews before committing.  I'm kinda\nsold on this feature.  I agree with the off-by-default config flag.\n\n> I don't want Guilt to fork. Jeff, it would be really great if\n> you could set up a public repo again!\n\nYep.  I'm trying to reclaim control of the repo.or.cz guilt repo... I no\nlonger have access to jsipek@cs.sunysb.edu and I don't remember the\npassword.\n\nJeff.\n\n-- \nNT is to UNIX what a doughnut is to a particle accelerator.\n"},{"id":"207956","messageId":"20130127143858.GA101013@meili.valhalla.31bits.net","threadId":"32645","inReplyTo":"20130116022606.GI12524@google.com","subject":"Re: [PATCH 0/7] guilt patches, including git 1.8 support","fromName":"Josef 'Jeff' Sipek","fromEmail":"jeffpc@josefsipek.net","sentAt":"2013-01-27T14:38:58Z","receivedAt":"2013-01-27T14:38:58Z","isPatch":true,"sender":{"key":"jeffpc@josefsipek.net","avatar":null},"body":"On Tue, Jan 15, 2013 at 06:26:06PM -0800, Jonathan Nieder wrote:\n> Hi Jeff and other guilty parties,\n> \n> I collected all the guilt patches I could find on-list and added one\n> of my own.  Completely untested, except for running the regression\n> tests.  These are also available via git protocol from\n> \n>   git://repo.or.cz/guilt/mob.git mob\n> \n> Thoughts?\n\nSorry for taking so long.  I finally reclaimed access to\ngit://repo.or.cz/guilt.git.  I pulled from mob, and merged it with what I\nhad locally.\n\nhttp://repo.or.cz/w/guilt.git\n\nThanks for collecting all these in one place!\n\nJeff.\n\n> Jonathan Nieder (1):\n>   Drop unneeded git version check.\n> \n> Per Cederqvist (6):\n>   get rid of \"cat: write error: Broken pipe\" error message\n>   The tests should not fail if log.date or log.decorate are set.\n>   Testsuite: get rid of \"Broken pipe\" errors from yes.\n>   Handle empty patches and patches with only a header.\n>   Fix fatal \"guilt graph\" error in sha1sum invocation.\n>   Change git branch when patches are applied.\n> \n>  Documentation/guilt.7 |   4 +\n>  guilt                 |  73 +++++---\n>  guilt-branch          |  12 +-\n>  guilt-commit          |   7 +\n>  guilt-import-commit   |   4 +-\n>  guilt-repair          |   7 +-\n>  os.Darwin             |   7 +-\n>  os.Linux              |   7 +-\n>  os.SunOS              |   7 +-\n>  regression/scaffold   |   7 +-\n>  regression/t-029.sh   |   6 +-\n>  regression/t-052.out  |  24 +--\n>  regression/t-052.sh   |   7 +-\n>  regression/t-061.out  | 468 ++++++++++++++++++++++++++++++++++++++++++++++++++\n>  regression/t-061.sh   | 148 ++++++++++++++++\n>  15 files changed, 743 insertions(+), 45 deletions(-)\n>  create mode 100644 regression/t-061.out\n>  create mode 100755 regression/t-061.sh\n\n-- \nI have always wished for my computer to be as easy to use as my telephone;\nmy wish has come true because I can no longer figure out how to use my\ntelephone.\n\t\t- Bjarne Stroustrup\n"}]}