git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GUILT v3 14/31] Use "git check-ref-format" to validate patch names.

From
Per Cederqvist <cederp@opera.com>
Date
May 18, 2014, 18:59 UTC
Message-ID
<CAP=KgsSu6R1EiS79+btBZp95YyhuLFAGhmheF_ktLvVrA+O=aA@mail.gmail.com>
In-Reply-To
<20140516152052.GD1770@meili.valhalla.31bits.net>
On Fri, May 16, 2014 at 5:20 PM, Jeff Sipek <jeffpc@josefsipek.net> wrote:
Show 48 quoted lines
> On Fri, May 16, 2014 at 04:46:01PM +0200, Per Cederqvist wrote:
>> The valid_patchname now lets "git check-ref-format" do its job instead
>> of trying (and failing) to implement the same rules.  See
>> git-check-ref-format(1) for a list of the rules.
>>
>> Refer to the git-check-ref-format(1) man page in the error messages
>> produced when valid_patchname indicates that the name is bad.
>>
>> Added testcases that breaks most of the rules in that man-page.
>>
>> Git version 1.8.5 no longer allows the single character "@" as a
>> branch name.  Guilt always rejects that name, for increased
>> compatibility.
>>
>> Signed-off-by: Per Cederqvist <cederp@opera.com>
>> Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
>> ---
>>  guilt                |  21 ++-
>>  guilt-fork           |   2 +-
>>  guilt-import         |   2 +-
>>  guilt-new            |   2 +-
>>  regression/t-025.out | 426 +++++++++++++++++++++++++++++++++++++++++++++++++--
>>  regression/t-025.sh  |  12 +-
>>  regression/t-032.out |   4 +-
>>  7 files changed, 446 insertions(+), 23 deletions(-)
>>
>> diff --git a/guilt b/guilt
>> index 3fc524e..23cc2da 100755
>> --- a/guilt
>> +++ b/guilt
>> @@ -132,14 +132,19 @@ fi
>>  # usage: valid_patchname <patchname>
>>  valid_patchname()
>>  {
>> -     case "$1" in
>> -             /*|./*|../*|*/./*|*/../*|*/.|*/..|*/|*\ *|*\    *)
>> -                     return 1;;
>> -             *:*)
>> -                     return 1;;
>> -             *)
>> -                     return 0;;
>> -     esac
>> +     if git check-ref-format --allow-onelevel "$1"; then
>
> I know I already signed off on this, but I just tried to run the regression
> suite with your changes on 1.7.3.2.  It blows up because --allow-onelevel is
> not recognized.  Yes, 1.7 is a bit on the old side but I think it's
> reasonable to still support it.  Thoughts?

Oh. I was not aware that --allow-onelevel was so new (it was added in Git 1.7.8).

I'll rewrite this using "git check-ref-format a/"$1"" instead.
Show 9 quoted lines
>> +             # Starting with Git version 1.8.5, a branch cannot be
>> +             # the single character "@".  Make sure guilt rejects
>> +             # that name even if we are currently using an older
>> +             # version of Git.  This ensures that the test suite
>> +             # runs fine using any version of Git.
>> +             if [ "$1" = "@" ]; then
>> +                     return 1
>> +             fi
>> +             return 0

There were other changes in Git version 1.7.6.4 and 1.7.8. I'll add similar code for those as well in the upcoming v4 of the series. With those changes, the test suite works with Git 1.5.0 and newer (I've checked all versions made of three numbers, but not those made of four numbers.)

Jeff, I'll remove your signed-off-by so that you can check the new code that I will post within a couple of days.

    /ceder
Show 588 quoted lines
>> +     else
>> +             return 1
>> +     fi
>>  }
>>
>>  get_branch()
>> diff --git a/guilt-fork b/guilt-fork
>> index a85d391..6447e55 100755
>> --- a/guilt-fork
>> +++ b/guilt-fork
>> @@ -37,7 +37,7 @@ else
>>  fi
>>
>>  if ! valid_patchname "$newpatch"; then
>> -     die "The specified patch name contains invalid characters (:)."
>> +     die "The specified patch name is invalid according to git-check-ref-format(1)."
>>  fi
>>
>>  if [ -e "$GUILT_DIR/$branch/$newpatch" ]; then
>> diff --git a/guilt-import b/guilt-import
>> index 3e9b3bb..928e325 100755
>> --- a/guilt-import
>> +++ b/guilt-import
>> @@ -40,7 +40,7 @@ if [ -e "$GUILT_DIR/$branch/$newname" ]; then
>>  fi
>>
>>  if ! valid_patchname "$newname"; then
>> -     die "The specified patch name contains invalid characters (:)."
>> +     die "The specified patch name is invalid according to git-check-ref-format(1)."
>>  fi
>>
>>  # create any directories as needed
>> diff --git a/guilt-new b/guilt-new
>> index 9528438..9f7fa44 100755
>> --- a/guilt-new
>> +++ b/guilt-new
>> @@ -64,7 +64,7 @@ fi
>>
>>  if ! valid_patchname "$patch"; then
>>       disp "Patchname is invalid." >&2
>> -     die "it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace"
>> +     die "It must follow the rules in git-check-ref-format(1)."
>>  fi
>>
>>  # create any directories as needed
>> diff --git a/regression/t-025.out b/regression/t-025.out
>> index 7811ab1..01bc406 100644
>> --- a/regression/t-025.out
>> +++ b/regression/t-025.out
>> @@ -141,7 +141,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new white space
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -211,7 +211,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new /abc
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -235,7 +235,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new ./blah
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -259,7 +259,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new ../blah
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -283,7 +283,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new abc/./blah
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -307,7 +307,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new abc/../blah
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -331,7 +331,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new abc/.
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -355,7 +355,7 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new abc/..
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> @@ -379,7 +379,415 @@ f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>>  r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>>  % guilt new abc/
>>  Patchname is invalid.
>> -it cannot begin with '/', './' or '../', or contain /./, /../, or whitespace
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new abc.lock
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new a/b.lock/c
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new cr
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new ctrl-a
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new formfeed
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new del
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new tilde~
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new caret^
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new colon:
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new questionmark?
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new asterisk*
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new open[bracket
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new consecutive//slashes
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new trailing-dot.
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new bad@{seq
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new @
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>> +% list_files
>> +d .git/patches
>> +d .git/patches/master
>> +d .git/patches/master/dir
>> +d .git/patches/master/dir/subdir
>> +d .git/refs/patches
>> +d .git/refs/patches/master
>> +d .git/refs/patches/master/dir
>> +d .git/refs/patches/master/dir/subdir
>> +f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67  .git/patches/master/series
>> +f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
>> +f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
>> +f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03  .git/patches/master/status
>> +f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
>> +f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/append
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/dir/subdir/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/file
>> +f da39a3ee5e6b4b0d3255bfef95601890afd80709  .git/patches/master/prepend
>> +r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8  .git/refs/patches/master/prepend
>> +% guilt new backslash\
>> +Patchname is invalid.
>> +It must follow the rules in git-check-ref-format(1).
>>  % list_files
>>  d .git/patches
>>  d .git/patches/master
>> diff --git a/regression/t-025.sh b/regression/t-025.sh
>> index 985fed4..8c439fc 100755
>> --- a/regression/t-025.sh
>> +++ b/regression/t-025.sh
>> @@ -43,7 +43,17 @@ shouldfail guilt new "white space"
>>
>>  cmd list_files
>>
>> -for pname in prepend mode /abc ./blah ../blah abc/./blah abc/../blah abc/. abc/.. abc/ ; do
>> +b()
>> +{
>> +    printf "%b" "$1"
>> +}
>> +
>> +for pname in prepend mode /abc ./blah ../blah abc/./blah abc/../blah abc/. \
>> +     abc/.. abc/ abc.lock a/b.lock/c `b 'cr\r'` `b 'ctrl-a\001'` \
>> +     `b 'formfeed\f'` `b 'del\177'` "tilde~" "caret^" "colon:" \
>> +     "questionmark?" "asterisk*" "open[bracket" "consecutive//slashes" \
>> +     "trailing-dot." "bad@{seq" "@" "backslash\\"
>> +do
>>       shouldfail guilt new "$pname"
>>
>>       cmd list_files
>> diff --git a/regression/t-032.out b/regression/t-032.out
>> index 53f0370..4e65db0 100644
>> --- a/regression/t-032.out
>> +++ b/regression/t-032.out
>> @@ -1,7 +1,7 @@
>>  % setup_repo
>>  % touch foo foo:baz
>>  % guilt import -P foo:bar foo
>> -The specified patch name contains invalid characters (:).
>> +The specified patch name is invalid according to git-check-ref-format(1).
>>  % guilt import -P foo:bar foo2
>>  Specified file does not exist.
>>  % guilt import -P foo foo2
>> @@ -15,4 +15,4 @@ Already tracking a patch under that name.
>>  Already tracking a patch under that name.
>>  % guilt import -P foo,bar foo
>>  % guilt import foo:baz
>> -The specified patch name contains invalid characters (:).
>> +The specified patch name is invalid according to git-check-ref-format(1).
>> --
>> 1.8.3.1
>>
>
> --
> Evolution, n.:
>   A hypothetical process whereby infinitely improbable events occur with
>   alarming frequency, order arises from chaos, and no one is given credit.
Previous: Jeff SipekNext: Per Cederqvist
Message 21 of 41 in “[GUILT v3 00/31] Teach guilt import-commit how to create legal patch names, and more”
  1. Per CederqvistMay 16, 2014
  2. 01/31 The tests should not fail if guilt.diffstat is set.Per Cederqvist, May 16, 2014
  3. 02/31 Allow "guilt delete -f" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  4. 03/31 Added test case for "guilt delete -f".Per Cederqvist, May 16, 2014
  5. 04/31 Allow "guilt import-commit" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  6. 05/31 "guilt new": Accept more than 4 arguments.Per Cederqvist, May 16, 2014
  7. 06/31 Fix the do_get_patch function.Per Cederqvist, May 16, 2014
  8. 07/31 Added test cases for "guilt fold".Per Cederqvist, May 16, 2014
  9. 08/31 Added more test cases for "guilt new": empty patches.Per Cederqvist, May 16, 2014
  10. Jeff SipekMay 16, 2014
  11. 09/31 Test suite: properly check the exit status of commands.Per Cederqvist, May 16, 2014
  12. Jeff SipekMay 16, 2014
  13. Per CederqvistMay 18, 2014
  14. 10/31 Run test_failed if the exit status of a test script is bad.Per Cederqvist, May 16, 2014
  15. 11/31 test suite: remove pointless redirection.Per Cederqvist, May 16, 2014
  16. 12/31 "guilt header": more robust header selection.Per Cederqvist, May 16, 2014
  17. Jeff SipekMay 16, 2014
  18. 13/31 Check that "guilt header '.*'" fails.Per Cederqvist, May 16, 2014
  19. 14/31 Use "git check-ref-format" to validate patch names.Per Cederqvist, May 16, 2014
  20. Jeff SipekMay 16, 2014
  21. Per CederqvistMay 18, 2014
  22. 15/31 Produce legal patch names in guilt-import-commit.Per Cederqvist, May 16, 2014
  23. 16/31 Fix backslash handling when creating names of imported patches.Per Cederqvist, May 16, 2014
  24. 17/31 "guilt graph" no longer loops when no patches are applied.Per Cederqvist, May 16, 2014
  25. 18/31 guilt-graph: Handle commas in branch names.Per Cederqvist, May 16, 2014
  26. 19/31 Check that "guilt graph" works when working on a branch with a comma.Per Cederqvist, May 16, 2014
  27. 20/31 "guilt graph": Handle patch names containing quotes.Per Cederqvist, May 16, 2014
  28. 21/31 The log.decorate setting should not influence import-commit.Per Cederqvist, May 16, 2014
  29. 22/31 The log.decorate setting should not influence patchbomb.Per Cederqvist, May 16, 2014
  30. 23/31 The log.decorate setting should not influence guilt rebase.Per Cederqvist, May 16, 2014
  31. 24/31 disp no longer processes backslashes.Per Cederqvist, May 16, 2014
  32. 25/31 "guilt push" now fails when there are no more patches to push.Per Cederqvist, May 16, 2014
  33. 26/31 "guilt pop" now fails when there are no more patches to pop.Per Cederqvist, May 16, 2014
  34. 27/31 Minor testsuite fix.Per Cederqvist, May 16, 2014
  35. 28/31 Fix coding style errors in t-061.sh.Per Cederqvist, May 16, 2014
  36. Jeff SipekMay 16, 2014
  37. 29/31 Added guilt.reusebranch configuration option.Per Cederqvist, May 16, 2014
  38. Jeff SipekMay 16, 2014
  39. 30/31 Added a short style guide, and Emacs settings.Per Cederqvist, May 16, 2014
  40. 31/31 Don't use "git log -p" in the test suite.Per Cederqvist, May 16, 2014
  41. Jeff SipekMay 16, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.