From mboxrd@z Thu Jan 1 00:00:00 1970 From: Per Cederqvist Subject: [GUILT v2 14/29] Use "git check-ref-format" to validate patch names. Date: Tue, 13 May 2014 22:30:50 +0200 Message-ID: <1400013065-27919-15-git-send-email-cederp@opera.com> References: <1400013065-27919-1-git-send-email-cederp@opera.com> Cc: git@vger.kernel.org, Per Cederqvist To: Jeff Sipek X-From: git-owner@vger.kernel.org Tue May 13 22:36:05 2014 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WkJQh-0005GO-Q0 for gcvg-git-2@plane.gmane.org; Tue, 13 May 2014 22:36:04 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932146AbaEMUgA (ORCPT ); Tue, 13 May 2014 16:36:00 -0400 Received: from mail-lb0-f182.google.com ([209.85.217.182]:41415 "EHLO mail-lb0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752819AbaEMUf6 (ORCPT ); Tue, 13 May 2014 16:35:58 -0400 Received: by mail-lb0-f182.google.com with SMTP id q8so699510lbi.41 for ; Tue, 13 May 2014 13:35:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=F7pFTSnXDLMZIYfpYHJrTB/m0USshfd6FzORF/OsWho=; b=cm+b+Q0Avmkof3klkw7oNXynMAc7LC8mSsztLlulktAHmga9Gy2rz6aHYmQarnQoNP IgCzPCNRaf/OSrm4NDYQOYTHnT5ZmF/Q6Aw1wp1UUBSMSFOfQMNmmYLx6nT8OqglqsC1 y5q/aUBLMt+lqOHSuylRCXDvyyCJWTo9bM6G25iQlKQoUV2URPlRiGDBKayzTmZ4bLb9 i13v+3Hft47JeElkqEz8q+xKZ/EFFcUnGvxgBixfMRDao47Ag53vQOIVVlEIP2fgWOm/ j/MaZT9AgbUVULD7TfqBKKV3uxWEfQ8DbFaeE+1hUP1OVkjY6udGGz4cZp8I7Y96428K zwxA== X-Gm-Message-State: ALoCoQkjbvy/a3jA5dRd3+N55tPDnDBaJMF+yJlmOxpjG8qpr+81L1TdtGoTCNdN4p0cCxDUjP3X X-Received: by 10.112.52.167 with SMTP id u7mr30077069lbo.28.1400013356827; Tue, 13 May 2014 13:35:56 -0700 (PDT) Received: from dualla.linkoping.osa (ip-200.t2.se.opera.com. [212.247.211.200]) by mx.google.com with ESMTPSA id m2sm11431763lbp.31.2014.05.13.13.35.54 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 13 May 2014 13:35:55 -0700 (PDT) X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1400013065-27919-1-git-send-email-cederp@opera.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: 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 --- 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 valid_patchname() { - case "$1" in - /*|./*|../*|*/./*|*/../*|*/.|*/..|*/|*\ *|*\ *) - return 1;; - *:*) - return 1;; - *) - return 0;; - esac + if git check-ref-format --allow-onelevel "$1"; then + # 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 + 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