* [PATCH 0/2] document alias accepting non-command first word @ 2019-05-31 20:23 Denton Liu 2019-05-31 20:23 ` [PATCH 1/2] config/alias.txt: change " and ' to ` Denton Liu ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Denton Liu @ 2019-05-31 20:23 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin When I first saw Johannes' email here[1], I was surprised that an alias where the first-word is a command-line option to be passed into `git` was permitted. I was only used to aliases where the first word is a command. Document this behaviour so that users will be able to discover that this is a feature. [1]: https://public-inbox.org/git/nycvar.QRO.7.76.6.1905281235280.44@tvgsbejvaqbjf.bet/ Denton Liu (2): config/alias.txt: change " and ' to ` config/alias.txt: document alias accepting non-command first word Documentation/config/alias.txt | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] config/alias.txt: change " and ' to ` 2019-05-31 20:23 [PATCH 0/2] document alias accepting non-command first word Denton Liu @ 2019-05-31 20:23 ` Denton Liu 2019-05-31 20:23 ` [PATCH 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu 2 siblings, 0 replies; 8+ messages in thread From: Denton Liu @ 2019-05-31 20:23 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin Before, the documentation would mix " and ' for code and config snippets. Change these instances to ` so that they are marked up in monospace. Signed-off-by: Denton Liu <liu.denton@gmail.com> --- Documentation/config/alias.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt index 0b14178314..5425449a50 100644 --- a/Documentation/config/alias.txt +++ b/Documentation/config/alias.txt @@ -1,7 +1,7 @@ alias.*:: Command aliases for the linkgit:git[1] command wrapper - e.g. - after defining "alias.last = cat-file commit HEAD", the invocation - "git last" is equivalent to "git cat-file commit HEAD". To avoid + after defining `alias.last = cat-file commit HEAD`, the invocation + `git last` is equivalent to `git cat-file commit HEAD`. To avoid confusion and troubles with script usage, aliases that hide existing Git commands are ignored. Arguments are split by spaces, the usual shell quoting and escaping is supported. @@ -9,10 +9,10 @@ alias.*:: + If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining -"alias.new = !gitk --all --not ORIG_HEAD", the invocation -"git new" is equivalent to running the shell command -"gitk --all --not ORIG_HEAD". Note that shell commands will be +`alias.new = !gitk --all --not ORIG_HEAD`, the invocation +`git new` is equivalent to running the shell command +`gitk --all --not ORIG_HEAD`. Note that shell commands will be executed from the top-level directory of a repository, which may not necessarily be the current directory. -`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix' +`GIT_PREFIX` is set as returned by running `git rev-parse --show-prefix` from the original current directory. See linkgit:git-rev-parse[1]. -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] config/alias.txt: document alias accepting non-command first word 2019-05-31 20:23 [PATCH 0/2] document alias accepting non-command first word Denton Liu 2019-05-31 20:23 ` [PATCH 1/2] config/alias.txt: change " and ' to ` Denton Liu @ 2019-05-31 20:23 ` Denton Liu 2019-06-05 12:37 ` Johannes Schindelin 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu 2 siblings, 1 reply; 8+ messages in thread From: Denton Liu @ 2019-05-31 20:23 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin One can see that an alias that begins with a non-command first word, such as `loud-rebase = -c commit.verbose=true rebase`, is permitted. However, this isn't immediately obvious to users as alias instances typically begin with a command. Document the fact that an alias can begin with a non-command first word so that users will be able to discover that this is a feature. Signed-off-by: Denton Liu <liu.denton@gmail.com> --- Documentation/config/alias.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt index 5425449a50..f241f03ebe 100644 --- a/Documentation/config/alias.txt +++ b/Documentation/config/alias.txt @@ -7,6 +7,14 @@ alias.*:: spaces, the usual shell quoting and escaping is supported. A quote pair or a backslash can be used to quote them. + +Note that the first word of an alias does not necessarily have to be a +command. It can be a command-line option that will be passed into the +invocation of `git`. In particular, this is useful when used with `-c` +to pass in one-time configurations. For example, +`loud-rebase = -c commit.verbose=true rebase` can be defined such that +running `git loud-merge` would be equivalent to +`git -c commit.verbose=true rebase`. ++ If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining `alias.new = !gitk --all --not ORIG_HEAD`, the invocation -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] config/alias.txt: document alias accepting non-command first word 2019-05-31 20:23 ` [PATCH 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu @ 2019-06-05 12:37 ` Johannes Schindelin 0 siblings, 0 replies; 8+ messages in thread From: Johannes Schindelin @ 2019-06-05 12:37 UTC (permalink / raw) To: Denton Liu; +Cc: Git Mailing List Hi Denton, On Fri, 31 May 2019, Denton Liu wrote: > One can see that an alias that begins with a non-command first word, > such as `loud-rebase = -c commit.verbose=true rebase`, is permitted. > However, this isn't immediately obvious to users as alias instances > typically begin with a command. > > Document the fact that an alias can begin with a non-command first word > so that users will be able to discover that this is a feature. You caught me. Granted, back in 2006, when I introduced that feature, we were not *quite* as diligent about documenting new features as we are today (see 4ab243a944a6 (Allow an alias to start with "-p", 2006-07-24)). I like your patch! Maybe you would like to mention `-p`, too, as a possible use case, as that was the original reason I introduced the feature? (To this day, the first thing I do on a new machine *right* after installing Git is to call `git config --global alias.ps '-p status'`) I'd be fine with these two patches as-are, of course. Thank you! Dscho > > Signed-off-by: Denton Liu <liu.denton@gmail.com> > --- > Documentation/config/alias.txt | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt > index 5425449a50..f241f03ebe 100644 > --- a/Documentation/config/alias.txt > +++ b/Documentation/config/alias.txt > @@ -7,6 +7,14 @@ alias.*:: > spaces, the usual shell quoting and escaping is supported. > A quote pair or a backslash can be used to quote them. > + > +Note that the first word of an alias does not necessarily have to be a > +command. It can be a command-line option that will be passed into the > +invocation of `git`. In particular, this is useful when used with `-c` > +to pass in one-time configurations. For example, > +`loud-rebase = -c commit.verbose=true rebase` can be defined such that > +running `git loud-merge` would be equivalent to > +`git -c commit.verbose=true rebase`. > ++ > If the alias expansion is prefixed with an exclamation point, > it will be treated as a shell command. For example, defining > `alias.new = !gitk --all --not ORIG_HEAD`, the invocation > -- > 2.22.0.rc1.169.g49223abbf8 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 0/2] Doc: document alias accepting non-command first word 2019-05-31 20:23 [PATCH 0/2] document alias accepting non-command first word Denton Liu 2019-05-31 20:23 ` [PATCH 1/2] config/alias.txt: change " and ' to ` Denton Liu 2019-05-31 20:23 ` [PATCH 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu @ 2019-06-05 20:10 ` Denton Liu 2019-06-05 20:10 ` [PATCH v2 1/2] config/alias.txt: change " and ' to ` Denton Liu ` (2 more replies) 2 siblings, 3 replies; 8+ messages in thread From: Denton Liu @ 2019-06-05 20:10 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin Thanks for the review, Johannes. I think it's a good idea to add another alias for `-p` so included that suggestion. Also, while I was at it, I found a typo so I fixed that too. Changes since v1: * s/loud-merge/loud-rebase/ * Add `-p` as another example since that was Dscho's original use-case Denton Liu (2): config/alias.txt: change " and ' to ` config/alias.txt: document alias accepting non-command first word Documentation/config/alias.txt | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) Interdiff against v1: diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt index f241f03ebe..f1ca739d57 100644 --- a/Documentation/config/alias.txt +++ b/Documentation/config/alias.txt @@ -10,10 +10,12 @@ alias.*:: Note that the first word of an alias does not necessarily have to be a command. It can be a command-line option that will be passed into the invocation of `git`. In particular, this is useful when used with `-c` -to pass in one-time configurations. For example, +to pass in one-time configurations or `-p` to force pagination. For example, `loud-rebase = -c commit.verbose=true rebase` can be defined such that -running `git loud-merge` would be equivalent to -`git -c commit.verbose=true rebase`. +running `git loud-rebase` would be equivalent to +`git -c commit.verbose=true rebase`. Also, `ps = -p status` would be a +helpful alias since `git ps` would paginate the output of `git status` +where the original command does not. + If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] config/alias.txt: change " and ' to ` 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu @ 2019-06-05 20:10 ` Denton Liu 2019-06-05 20:10 ` [PATCH v2 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu 2019-06-06 12:48 ` [PATCH v2 0/2] Doc: " Johannes Schindelin 2 siblings, 0 replies; 8+ messages in thread From: Denton Liu @ 2019-06-05 20:10 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin Before, the documentation would mix " and ' for code and config snippets. Change these instances to ` so that they are marked up in monospace. Signed-off-by: Denton Liu <liu.denton@gmail.com> --- Documentation/config/alias.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt index 0b14178314..5425449a50 100644 --- a/Documentation/config/alias.txt +++ b/Documentation/config/alias.txt @@ -1,7 +1,7 @@ alias.*:: Command aliases for the linkgit:git[1] command wrapper - e.g. - after defining "alias.last = cat-file commit HEAD", the invocation - "git last" is equivalent to "git cat-file commit HEAD". To avoid + after defining `alias.last = cat-file commit HEAD`, the invocation + `git last` is equivalent to `git cat-file commit HEAD`. To avoid confusion and troubles with script usage, aliases that hide existing Git commands are ignored. Arguments are split by spaces, the usual shell quoting and escaping is supported. @@ -9,10 +9,10 @@ alias.*:: + If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining -"alias.new = !gitk --all --not ORIG_HEAD", the invocation -"git new" is equivalent to running the shell command -"gitk --all --not ORIG_HEAD". Note that shell commands will be +`alias.new = !gitk --all --not ORIG_HEAD`, the invocation +`git new` is equivalent to running the shell command +`gitk --all --not ORIG_HEAD`. Note that shell commands will be executed from the top-level directory of a repository, which may not necessarily be the current directory. -`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix' +`GIT_PREFIX` is set as returned by running `git rev-parse --show-prefix` from the original current directory. See linkgit:git-rev-parse[1]. -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] config/alias.txt: document alias accepting non-command first word 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu 2019-06-05 20:10 ` [PATCH v2 1/2] config/alias.txt: change " and ' to ` Denton Liu @ 2019-06-05 20:10 ` Denton Liu 2019-06-06 12:48 ` [PATCH v2 0/2] Doc: " Johannes Schindelin 2 siblings, 0 replies; 8+ messages in thread From: Denton Liu @ 2019-06-05 20:10 UTC (permalink / raw) To: Git Mailing List; +Cc: Johannes Schindelin One can see that an alias that begins with a non-command first word, such as `loud-rebase = -c commit.verbose=true rebase`, is permitted. However, this isn't immediately obvious to users as alias instances typically begin with a command. Document the fact that an alias can begin with a non-command first word so that users will be able to discover that this is a feature. Signed-off-by: Denton Liu <liu.denton@gmail.com> --- Documentation/config/alias.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/config/alias.txt b/Documentation/config/alias.txt index 5425449a50..f1ca739d57 100644 --- a/Documentation/config/alias.txt +++ b/Documentation/config/alias.txt @@ -7,6 +7,16 @@ alias.*:: spaces, the usual shell quoting and escaping is supported. A quote pair or a backslash can be used to quote them. + +Note that the first word of an alias does not necessarily have to be a +command. It can be a command-line option that will be passed into the +invocation of `git`. In particular, this is useful when used with `-c` +to pass in one-time configurations or `-p` to force pagination. For example, +`loud-rebase = -c commit.verbose=true rebase` can be defined such that +running `git loud-rebase` would be equivalent to +`git -c commit.verbose=true rebase`. Also, `ps = -p status` would be a +helpful alias since `git ps` would paginate the output of `git status` +where the original command does not. ++ If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining `alias.new = !gitk --all --not ORIG_HEAD`, the invocation -- 2.22.0.rc1.169.g49223abbf8 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/2] Doc: document alias accepting non-command first word 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu 2019-06-05 20:10 ` [PATCH v2 1/2] config/alias.txt: change " and ' to ` Denton Liu 2019-06-05 20:10 ` [PATCH v2 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu @ 2019-06-06 12:48 ` Johannes Schindelin 2 siblings, 0 replies; 8+ messages in thread From: Johannes Schindelin @ 2019-06-06 12:48 UTC (permalink / raw) To: Denton Liu; +Cc: Git Mailing List Hi Denton, On Wed, 5 Jun 2019, Denton Liu wrote: > Thanks for the review, Johannes. I think it's a good idea to add another > alias for `-p` so included that suggestion. Also, while I was at it, I > found a typo so I fixed that too. > > Changes since v1: > > * s/loud-merge/loud-rebase/ > * Add `-p` as another example since that was Dscho's original use-case Looks good to me! Dscho ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-06-06 12:48 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-05-31 20:23 [PATCH 0/2] document alias accepting non-command first word Denton Liu 2019-05-31 20:23 ` [PATCH 1/2] config/alias.txt: change " and ' to ` Denton Liu 2019-05-31 20:23 ` [PATCH 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu 2019-06-05 12:37 ` Johannes Schindelin 2019-06-05 20:10 ` [PATCH v2 0/2] Doc: " Denton Liu 2019-06-05 20:10 ` [PATCH v2 1/2] config/alias.txt: change " and ' to ` Denton Liu 2019-06-05 20:10 ` [PATCH v2 2/2] config/alias.txt: document alias accepting non-command first word Denton Liu 2019-06-06 12:48 ` [PATCH v2 0/2] Doc: " Johannes Schindelin
Code repositories for project(s) associated with this public inbox https://80x24.org/mirrors/git.git 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 read-only IMAP folder(s) and NNTP newsgroup(s).