From: Jeff Sipek <jeffpc@josefsipek.net>
To: Per Cederqvist <cederp@opera.com>
Cc: git@vger.kernel.org
Subject: Re: [GUILT v4 14/33] Use "git check-ref-format" to validate patch names.
Date: Thu, 22 Jan 2015 09:18:52 -0500 [thread overview]
Message-ID: <20150122141851.GC101460@meili.jeffnet.31bits.net> (raw)
In-Reply-To: <1400450409-30998-15-git-send-email-cederp@opera.com>
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
On Sun, May 18, 2014 at 11:59:50PM +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. Re-implement rules
> added to "git check-ref-format" after Git 1.5.0, so that guilt rejects
> the same names no matter what version of Git we are using (but
> versions prior to 1.5.0 are not supported).
>
> 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.
>
> Signed-off-by: Per Cederqvist <cederp@opera.com>
> ---
> guilt | 46 +++++-
> 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, 474 insertions(+), 20 deletions(-)
>
> diff --git a/guilt b/guilt
> index 3fc524e..9567a78 100755
> --- a/guilt
> +++ b/guilt
> @@ -132,14 +132,50 @@ fi
> # usage: valid_patchname <patchname>
> valid_patchname()
> {
> + # Once we only support Git 1.7.8 and newer, the command below
> + # could be replaced with:
> + #
> + # git check-ref-format --allow-onelevel "$1"
> + #
> + # Instead, we arbitrarily prepend one level. The result
> + # should be the same, and this is portable to all existing
> + # versions of Git.
> + git check-ref-format a/"$1"
> + if [ $? -ne 0 ]; then
> + return 1
> + fi
> +
> + # We want to reject all names that Git 2.0.0 rejects. In case
> + # we are running an older version, we explicitly check some
> + # cases that were added to Git after version 1.5.0. This code
> + # aims to support Git version 1.5.0 and newer.
> +
> + # Git 1.7.6.4 and newer rejects the DEL character.
> + if [ `echo "$1"|tr -d '\177'` != "$1" ]; then
> + return 1
> + fi
> +
> + # Git 1.7.8 and newer rejects refs that start or end with
> + # slash or contain multiple adjacent slashes.
> case "$1" in
> - /*|./*|../*|*/./*|*/../*|*/.|*/..|*/|*\ *|*\ *)
> + /*|*/|*//*)
> return 1;;
> - *:*)
> - return 1;;
> - *)
> - return 0;;
> esac
> +
> + # Git 1.7.8 and newer rejects refname components that end in
> + # .lock.
> + case "$1" in
> + *.lock/*|*.lock)
> + return 1;;
> + esac
> +
> + # Git 1.8.5 and newer rejects refnames that are made up of the
> + # single character "@".
> + if [ "$1" = "@" ]; then
> + return 1
> + fi
> +
> + return 0
> }
>
> 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\x01
> +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\f
> +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\x7f
> +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
>
--
What is the difference between Mechanical Engineers and Civil Engineers?
Mechanical Engineers build weapons, Civil Engineers build targets.
next prev parent reply other threads:[~2015-01-22 14:19 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-18 21:59 [GUILT v4 00/33] Teach guilt import-commit how to create legal patch names, and more Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 01/33] The tests should not fail if guilt.diffstat is set Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 02/33] Allow "guilt delete -f" to run from a dir which contains spaces Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 03/33] Added test case for "guilt delete -f" Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 04/33] Allow "guilt import-commit" to run from a dir which contains spaces Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 05/33] "guilt new": Accept more than 4 arguments Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 06/33] Fix the do_get_patch function Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 07/33] Added test cases for "guilt fold" Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 08/33] Added more test cases for "guilt new": empty patches Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 09/33] Test suite: properly check the exit status of commands Per Cederqvist
2015-01-22 14:27 ` Jeff Sipek
2014-05-18 21:59 ` [GUILT v4 10/33] Run test_failed if the exit status of a test script is bad Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 11/33] test suite: remove pointless redirection Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 12/33] "guilt header": more robust header selection Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 13/33] Check that "guilt header '.*'" fails Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 14/33] Use "git check-ref-format" to validate patch names Per Cederqvist
2015-01-22 14:18 ` Jeff Sipek [this message]
2014-05-18 21:59 ` [GUILT v4 15/33] Produce legal patch names in guilt-import-commit Per Cederqvist
2015-01-22 14:15 ` Jeff Sipek
2015-01-22 15:50 ` Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 16/33] Fix backslash handling when creating names of imported patches Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 17/33] "guilt graph" no longer loops when no patches are applied Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 18/33] guilt-graph: Handle commas in branch names Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 19/33] Check that "guilt graph" works when working on a branch with a comma Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 20/33] "guilt graph": Handle patch names containing quotes Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 21/33] The log.decorate setting should not influence import-commit Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 22/33] The log.decorate setting should not influence patchbomb Per Cederqvist
2014-05-18 21:59 ` [GUILT v4 23/33] The log.decorate setting should not influence guilt rebase Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 24/33] disp no longer processes backslashes Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 25/33] "guilt push" now fails when there are no more patches to push Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 26/33] "guilt pop" now fails when there are no more patches to pop Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 27/33] Minor testsuite fix Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 28/33] Fix coding style errors in t-061.sh Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 29/33] Added guilt.reusebranch configuration option Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 30/33] Added a short style guide, and Emacs settings Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 31/33] Don't use "git log -p" in the test suite Per Cederqvist
2014-05-18 22:00 ` [GUILT v4 32/33] Improved doc and tests for guilt header Per Cederqvist
2015-01-22 13:56 ` Jeff Sipek
2014-05-18 22:00 ` [GUILT v4 33/33] Document the exit status of guilt push and guilt pop Per Cederqvist
2015-01-22 14:31 ` Jeff Sipek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150122141851.GC101460@meili.jeffnet.31bits.net \
--to=jeffpc@josefsipek.net \
--cc=cederp@opera.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).