All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/1] gitcli: clarify "options first and then args"
@ 2022-01-17  7:56 Teng Long
  2022-01-17  8:21 ` [PATCH v1 1/1] git-cli.txt: " Teng Long
  0 siblings, 1 reply; 2+ messages in thread
From: Teng Long @ 2022-01-17  7:56 UTC (permalink / raw)
  To: git; +Cc: gitster, avarab, sandals, tenglong.tl, Teng Long

The patch adds some clarification about "options first and then args"
in "gitcli.txt" which was discussed in :

   https://public-inbox.org/git/cover.1642129840.git.dyroneteng@gmail.com/ 

Thanks.

Teng Long (1):
  git-cli.txt: clarify "options first and then args"

 Documentation/gitcli.txt | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

Range-diff against v0:
-:  ---------- > 1:  fe748304d9 git-cli.txt: clarify "options first and then args"
-- 
2.34.1.391.g9ef3d6f133


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH v1 1/1] git-cli.txt: clarify "options first and then args"
  2022-01-17  7:56 [PATCH v1 0/1] gitcli: clarify "options first and then args" Teng Long
@ 2022-01-17  8:21 ` Teng Long
  0 siblings, 0 replies; 2+ messages in thread
From: Teng Long @ 2022-01-17  8:21 UTC (permalink / raw)
  To: git; +Cc: gitster, avarab, sandals, tenglong.tl, Teng Long

There are some commands permit the user whether to provide options
first before args, or the reverse order. For example:

    git push --dry-run <remote> <ref>

And:

    git push <remote> <ref> --dry-run

Both of them is supported, but some commands do not, for instance:

     git ls-remote --heads <remote>

And:

     git ls-remote <remote> --heads

If <remote> only has one ref and it's name is "refs/heads/--heads", you
will get the same result, otherwise will not.This is because the former
in the second example will parse "--heads" as an "option" which means
to limit to only "refs/heads" when listing the remote references, the
latter treat "--heads" as an argument which means to filter the result
list with the given pattern.

Therefore, we want to specify a bit more in "gitcli.txt" about the way
we recommend and help to resolve the ambiguity around some git command
usage. The related disscussions locate at [1].

By the way, there are some issues with lowercase letters in the document,
which have been modified together.

[1] https://public-inbox.org/git/cover.1642129840.git.dyroneteng@gmail.com/

Signed-off-by: Teng Long <dyroneteng@gmail.com>
---
 Documentation/gitcli.txt | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt
index 92e4ba6a2f..1819a5a185 100644
--- a/Documentation/gitcli.txt
+++ b/Documentation/gitcli.txt
@@ -19,6 +19,15 @@ Many commands take revisions (most often "commits", but sometimes
 "tree-ish", depending on the context and command) and paths as their
 arguments.  Here are the rules:
 
+ * Options come first and then args.
+    A subcommand may take dashed options (which may take their own
+    arguments, e.g. "--max-parents 2") and arguments.  You SHOULD
+    give dashed options first and then arguments.  Some commands may
+    accept dashed options after you have already gave non-option
+    arguments (which may make the command ambiguous), but you should
+    not rely on it (because eventually we may find a way to fix
+    these ambiguity by enforcing the "options then args" rule).
+
  * Revisions come first and then paths.
    E.g. in `git diff v1.0 v2.0 arch/x86 include/asm-x86`,
    `v1.0` and `v2.0` are revisions and `arch/x86` and `include/asm-x86`
@@ -72,24 +81,24 @@ you will.
 Here are the rules regarding the "flags" that you should follow when you are
 scripting Git:
 
- * it's preferred to use the non-dashed form of Git commands, which means that
+ * It's preferred to use the non-dashed form of Git commands, which means that
    you should prefer `git foo` to `git-foo`.
 
- * splitting short options to separate words (prefer `git foo -a -b`
+ * Splitting short options to separate words (prefer `git foo -a -b`
    to `git foo -ab`, the latter may not even work).
 
- * when a command-line option takes an argument, use the 'stuck' form.  In
+ * When a command-line option takes an argument, use the 'stuck' form.  In
    other words, write `git foo -oArg` instead of `git foo -o Arg` for short
    options, and `git foo --long-opt=Arg` instead of `git foo --long-opt Arg`
    for long options.  An option that takes optional option-argument must be
    written in the 'stuck' form.
 
- * when you give a revision parameter to a command, make sure the parameter is
+ * When you give a revision parameter to a command, make sure the parameter is
    not ambiguous with a name of a file in the work tree.  E.g. do not write
    `git log -1 HEAD` but write `git log -1 HEAD --`; the former will not work
    if you happen to have a file called `HEAD` in the work tree.
 
- * many commands allow a long option `--option` to be abbreviated
+ * Many commands allow a long option `--option` to be abbreviated
    only to their unique prefix (e.g. if there is no other option
    whose name begins with `opt`, you may be able to spell `--opt` to
    invoke the `--option` flag), but you should fully spell them out
-- 
2.34.1.391.g9ef3d6f133


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-17  8:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-17  7:56 [PATCH v1 0/1] gitcli: clarify "options first and then args" Teng Long
2022-01-17  8:21 ` [PATCH v1 1/1] git-cli.txt: " Teng Long

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.