Subject: Re: [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line

From: Stefan Beller <[email-masked]>
Date: Sun, 27 Oct 2013 10:26:52 +0100

On 10/27/2013 09:09 AM, Thomas Rast wrote:
> Josh Triplett <[email-masked]> writes:
> 
>> On Sun, Oct 27, 2013 at 06:42:44AM +0100, Michael Haggerty wrote:
>>> But I don't think that this feature should be given the "-f" short
>>> option, as (a) -f often means "force"; (b) it will increase the
>>> confusion with --fixup; (c) it just doesn't strike me as being likely to
>>> be such a frequently-used option (though if this changes over time the
>>> "-f" option could always be granted to it later).
>>
>> (a) -n often means --dry-run, but for commit it means --no-verify.
>> Different commands have different options, and commit doesn't have a
>> --force to abbreviate as -f.
>>
>> (b) If anything, I think the existence of a short option will make the
>> distinction more obvious, since -f and --fixup are much less similar
>> than --fixes and --fixup.  Most users will never type --fixes, making
>> confusion unlikely.
>>
>> (c) Short option letters tend to be first-come first-serve unless
>> there's a strong reason to do otherwise.  Why reserve 'f' for some
>> hypothetical future option that doesn't exist yet?
> 
> No, lately the direction in Git has been to avoid giving options a
> one-letter shorthand until they have proven so useful that people using
> it in the wild start to suggest that it should have one.
> 
> See e.g.
> 
>   http://article.gmane.org/gmane.comp.version-control.git/233998
>   http://article.gmane.org/gmane.comp.version-control.git/168748
> 
> A much better argument would be if it was already clear from the specs
> laid out for Fixes that n% of the kernel commits will end up having this
> footer, and thus kernel hackers will spend x amount of time spelling out
> --fixes and/or confusing it with --fixup to much headache.
> 

I assembled an overview table, which plots the long options of 
git commands by the short letters.
Here it is:
(Best viewed with a *large* screen and monospace font)

         Name\short |              C |               B |              A |             G |              F |                E |               H |                    O |              N |                    L |         S |        R |            P |                 W |                X |               c |       b |         a |       g |      f |        e |            d |             k |            i |                 o |             n |         m |                   l |          s |        r |      q |              p |            w |             v |                u |         t |     z |        x |       3 |     2
             status |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |  branch |           |         |        |          |              |               |              |                   |               |           |                     |      short |          |        |                |              |       verbose |  untracked-files |           |  null |          |         |          status
               help |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |  guides |        |          |              |               |         info |                   |               |       man |                     |            |          |        |                |          web |               |                  |           |       |          |         |          help
               show |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          show
             revert |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |  strategy-option |                 |         |           |         |        |     edit |              |               |              |                   |     no-commit |  mainline |                     |    signoff |          |        |                |              |               |                  |           |       |          |         |          revert
       pack-objects |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          pack-objects
       prune-packed |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |       dry-run |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          prune-packed
            replace |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |       delete |               |              |                   |               |           |                list |            |          |        |                |              |               |                  |           |       |          |         |          replace
           show-ref |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |  dereference |               |              |                   |               |           |                     |       hash |          |  quiet |                |              |               |                  |           |       |          |         |          show-ref
                tag |                |                 |                |               |           file |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |  annotate |         |  force |          |       delete |               |              |                   |               |   message |                list |       sign |          |        |                |              |        verify |       local-user |           |       |          |         |          tag
                 gc |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          gc
              apply |                |                 |                |               |                |                  |                 |                      |                |                      |           |  reverse |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |    3way |          apply
       fsck-objects |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          fsck-objects
            archive |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |            output |               |           |                     |            |          |        |                |              |               |                  |           |       |          |         |          archive
         merge-file |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |         stdout |              |               |                  |           |       |          |         |          merge-file
                log |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          log
             cherry |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          cherry
     checkout-index |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |         |  force |          |              |               |              |                   |     no-create |           |                     |            |          |  quiet |                |              |               |            index |           |       |          |         |          checkout-index
         check-attr |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |               |                  |           |       |          |         |          check-attr
             reflog |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          reflog
             branch |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |         |  force |          |       delete |               |              |                   |               |      move |       create-reflog |            |  remotes |  quiet |                |              |       verbose |  set-upstream-to |     track |       |          |         |          branch
            ls-tree |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                long |            |          |        |                |              |               |                  |           |       |          |         |          ls-tree
                 rm |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |              |               |              |                   |       dry-run |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          rm
             config |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |   file |     edit |              |               |              |                   |               |           |                list |            |          |        |                |              |               |                  |           |  null |          |         |          config
             remote |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          remote
            init-db |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          init-db
         merge-base |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |               |                  |           |       |          |         |          merge-base
       for-each-ref |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |      shell |          |        |           perl |              |               |                  |           |       |          |         |          for-each-ref
              clone |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |          config |  branch |           |         |        |          |              |               |              |            origin |   no-checkout |           |               local |     shared |          |  quiet |                |              |       verbose |      upload-pack |           |       |          |         |          clone
      count-objects |                |                 |                |               |                |                  |  human-readable |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          count-objects
               fsck |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          fsck
        verify-pack |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |  stat-only |          |        |                |              |       verbose |                  |           |       |          |         |          verify-pack
 update-server-info |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |              |               |              |                   |               |           |                     |            |          |        |                |              |               |                  |           |       |          |         |          update-server-info
                add |                |                 |            all |               |                |                  |                 |                      |  intent-to-add |                      |           |          |              |                   |                  |                 |         |           |         |  force |     edit |              |               |  interactive |                   |       dry-run |           |                     |            |          |        |          patch |              |       verbose |           update |           |       |          |         |          add
        whatchanged |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          whatchanged
        cherry-pick |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |  strategy-option |                 |         |           |         |        |     edit |              |               |              |                   |     no-commit |  mainline |                     |    signoff |          |        |                |              |               |                  |           |       |          |         |          cherry-pick
          read-tree |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |       dry-run |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          read-tree
       format-patch |                |                 |                |               |                |                  |                 |                      |    no-numbered |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |  keep-subject |              |  output-directory |      numbered |           |                     |    signoff |          |  quiet |        no-stat |              |  reroll-count |                  |           |       |          |         |          format-patch
              stage |                |                 |            all |               |                |                  |                 |                      |  intent-to-add |                      |           |          |              |                   |                  |                 |         |           |         |  force |     edit |              |               |  interactive |                   |       dry-run |           |                     |            |          |        |          patch |              |       verbose |           update |           |       |          |         |          stage
              reset |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |          patch |              |               |                  |           |       |          |         |          reset
       check-ignore |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |  non-matching |           |                     |            |          |  quiet |                |              |       verbose |                  |           |       |          |         |          check-ignore
               grep |        context |  before-context |  after-context |  basic-regexp |  fixed-strings |  extended-regexp |                 |  open-files-in-pager |                |  files-without-match |           |          |  perl-regexp |  function-context |                  |           count |         |      text |         |        |          |              |               |  ignore-case |                   |   line-number |           |  files-with-matches |            |          |  quiet |  show-function |  word-regexp |  invert-match |                  |           |  null |          |         |          grep
              prune |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |       dry-run |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          prune
       symbolic-ref |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |       delete |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          symbolic-ref
           checkout |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |              |               |              |                   |               |     merge |                     |            |          |  quiet |          patch |              |               |                  |     track |       |          |  theirs |  ours    checkout
             repack |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |               local |            |          |  quiet |                |              |               |                  |           |       |          |         |          repack
               init |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          init
              merge |                |                 |                |               |                |                  |                 |                      |                |                      |  gpg-sign |          |              |                   |  strategy-option |                 |         |           |         |        |     edit |              |               |              |                   |               |   message |                     |   strategy |          |  quiet |                |              |       verbose |                  |           |       |          |         |          merge
                 mv |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |              |               |              |                   |       dry-run |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          mv
           ls-files |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |     exclude-from |          cached |         |           |         |        |          |      deleted |        killed |      ignored |            others |               |  modified |                     |      stage |          |        |                |              |               |         unmerged |           |       |  exclude |         |          ls-files
              clean |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |  exclude |              |               |  interactive |                   |       dry-run |           |                     |            |          |  quiet |                |              |               |                  |           |       |          |         |          clean
        show-branch |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |       all |  reflog |        |          |              |               |              |                   |               |           |                     |            |  remotes |        |                |              |               |                  |           |       |          |         |          show-branch
               push |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |  force |          |              |               |              |                   |       dry-run |           |                     |            |          |  quiet |                |              |       verbose |     set-upstream |           |       |          |         |          push
             commit |  reuse-message |                 |                |               |           file |                  |                 |                      |                |                      |  gpg-sign |          |              |                   |                  |  reedit-message |         |       all |         |        |     edit |              |               |      include |              only |     no-verify |   message |                     |    signoff |          |  quiet |          patch |              |       verbose |  untracked-files |  template |  null |          |         |          commit
         verify-tag |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |           |                     |            |          |        |                |              |       verbose |                  |           |       |          |         |          verify-tag
      fmt-merge-msg |                |                 |                |               |           file |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |           |         |        |          |              |               |              |                   |               |   message |                     |            |          |        |                |              |               |                  |           |       |          |         |          fmt-merge-msg
              fetch |                |                 |                |               |                |                  |                 |                      |                |                      |           |          |              |                   |                  |                 |         |    append |         |  force |          |              |          keep |              |                   |               |  multiple |                     |            |          |  quiet |          prune |              |       verbose |   update-head-ok |      tags |       |          |         |          fetch

(In case thunderbird messes it up, here it is again http://pastebin.com/raw.php?i=JBci2Krx)

As you can see, f is always --force except for git-config, where it is --file