RFC ls-remote: inconsistency from the order of args and opts
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest1 patch 16 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/1 | ls-remote: Make the output independent of the order of opts and <remote>builtin/ t/ | +25 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [RFC PATCH v1 0/1] ls-remote: inconsistency from the order of args and opts
It has a different results by executing "git ls-remote -heads origin" and "git ls-remote origin --heads". A test for reproduction is as follows:
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+test_description='test ls-tree for reproduction'
+
+. ./test-lib.sh
+
+
+test_must_fail 'Exchange the order of "--heads" and <remote>' '
+ git --version && + git init "test.git" && + test_commit -C "test.git" one && + git -C "test.git" ls-remote --heads ./. > result.1 && + git -C "test.git" ls-remote ./. --heads > result.2 && + test_cmp result.1 result.2
+'
+
+test_done
--
2.34.1.391.g9ef3d6f133
"git -C "test.git" ls-remote ./. --heads" returns nothing here because "ls-remote" supports to treat args as patterns to filter the refs list , and "--heads" here as the pattern does not match any.
If a repo exists a ref which is named as "refs/heads/--heads", execute mgit ls-remote origin --heads will return ("mgit" is a alias means the git binary that is built by "master" in my env):
0319b78d7c31e5203d79157fe82960db88cc4a54 refs/heads/--heads
If we execute again in terms of this patch by git ls-remote origin --heads:
0319b78d7c31e5203d79157fe82960db88cc4a54 refs/heads/--heads
0319b78d7c31e5203d79157fe82960db88cc4a54 refs/heads/masterAnd if we hope to let "--heads" to be treated as a "pattern", we can execute git ls-remote origin --heads -- "--heads":
0319b78d7c31e5203d79157fe82960db88cc4a54 refs/heads/--heads
Personally, I think the second option is probably a little better, but there are also possible backward compatibility issues, such as users ending branch names with "-heads" and so on.
So I sent this patch to try to figure out if this was a requirement of the original design, or if it was something that could really be improved, or if we can find a better way to deal this issue with compatibility.
Thanks.
Teng Long (1):
ls-remote: Make the output independent of the order of opts and
<remote>
builtin/ls-remote.c | 3 +-- t/t5512-ls-remote.sh | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-)
Range-diff against v0:
-: ---------- > 1: 9ef3d6f133 ls-remote: Make the output independent of the order of opts and <remote>
Signature · 1 line
2.34.1.391.g9ef3d6f133