ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
Currently when we use the 'lstrip=<N>' option, if 'N' is greater than the number of components available in the refname, we abruptly end program execution by calling die(). This behavior is undesired since a single refname with few components could end program execution. To avoid this, return an empty string whenever the value 'N' is greater than the number of components available, instead of calling die(). Signed-off-by: Karthik Nayak <Karthik.188@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Karthik Nayak committed
Jan 10, 2017 at 14:19 UTC
3a42980f9e5ecc2b74c538109d4007c630881f1c
3 files changed
+2
-8
Documentation/git-for-each-ref.txt
+1
-2
@@ -98,8 +98,7 @@ refname::
98
abbreviation mode. If `lstrip=<N>` is appended, strips `<N>`
99
slash-separated path components from the front of the refname
100
(e.g., `%(refname:lstrip=2)` turns `refs/tags/foo` into `foo`.
101
- `<N>` must be a positive integer. If a displayed ref has fewer
102
- components than `<N>`, the command aborts with an error.
101
+ `<N>` must be a positive integer.
102
103
objecttype::
104
The type of the object (`blob`, `tree`, `commit`, `tag`).
ref-filter.c
+1
-2
@@ -1099,8 +1099,7 @@ static const char *lstrip_ref_components(const char *refname, unsigned int len)
1099
while (remaining) {
1100
switch (*start++) {
1101
case '\0':
1102
- die(_("ref '%s' does not have %ud components to :lstrip"),
1103
- refname, len);
1102
+ return "";
1103
case '/':
1104
remaining--;
1105
break;
t/t6300-for-each-ref.sh
-4
@@ -147,10 +147,6 @@ test_expect_success 'arguments to :lstrip must be positive integers' '
147
test_must_fail git for-each-ref --format="%(refname:lstrip=foo)"
148
'
149
150
-test_expect_success 'stripping refnames too far gives an error' '
151
- test_must_fail git for-each-ref --format="%(refname:lstrip=3)"
152
-'
153
-
150
test_expect_success 'Check format specifiers are ignored in naming date atoms' '
151
git for-each-ref --format="%(authordate)" refs/heads &&
152
git for-each-ref --format="%(authordate:default) %(authordate)" refs/heads &&