{"thread":{"id":"38149","subject":"[RFD/PATCH] Documentation: mention category","startedAt":"2014-12-09T11:21:02Z","lastAt":"2014-12-10T14:45:30Z","messageCount":3,"participants":["Michael J Gruber","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"253410","messageId":"538d1a10bda3793ea10ec6f7de43de371d17e709.1418123780.git.git@drmicha.warpmail.net","threadId":"38149","inReplyTo":null,"subject":"[RFD/PATCH] Documentation: mention category","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2014-12-09T11:21:02Z","receivedAt":"2014-12-09T11:21:02Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Quite a few users seem to get confused about which commands to use\nas the main git interface. While `git --help' gives an overview,\nusers seem to discover commands from the man page which does not\ntell them to stay away from plumbing commands first.\n\nIntroduce a category section in each man page which helps users\ndecide whether to read on at all.\n\nSigned-off-by: Michael J Gruber <git@drmicha.warpmail.net>\n---\nThis is just a suggestion to give new users better orientation. The naming\nfor the categories is up for discussion, of course. The categorization\nitself is taken from command-list.txt and translated via:\n\n--->%---\n\tcase \"$category\" in\n\tancillaryinterrogators*)\n\t\tout=\"Ancillary interrogator\"\n\t\t;;\n\tancillarymanipulator*)\n\t\tout=\"Ancillary manipulator\"\n\t\t;;\n\tforeignscminterface*)\n\t\tout=\"Interface to foreign SCM\"\n\t\t;;\n\t\n\tmainporcelain*)\n\t\tout=\"Main user interface command (porcelain)\"\n\t\t;;\n\tplumbing*)\n\t\tout=\"Low level command for script writers (plumbing)\"\n\t\t;;\n\tpurehelpers*)\n\t\tout=\"Helper command for script writers\"\n\t\t;;\n\tsync*)\n\t\tout=\"Commands used internally for synching repositories\"\n\t\t;;\n\t*)\n\t\tout=\"\"\n\t\techo \"What to do with $command - $category\"\n\t\t;;\n\tesac\n---<%---\n\nRather than changing git-foo.txt, we could do the substitution magic\nfrom Documentation/Makefile, of course, to keep man pages and command-list\nin sync. Although this would keep me from submitting the final series\nwith 1 patch per file :)\n\n Documentation/git-add.txt                | 4 ++++\n Documentation/git-am.txt                 | 4 ++++\n Documentation/git-annotate.txt           | 4 ++++\n Documentation/git-apply.txt              | 4 ++++\n Documentation/git-archimport.txt         | 4 ++++\n Documentation/git-archive.txt            | 4 ++++\n Documentation/git-bisect.txt             | 4 ++++\n Documentation/git-blame.txt              | 4 ++++\n Documentation/git-branch.txt             | 4 ++++\n Documentation/git-bundle.txt             | 4 ++++\n Documentation/git-cat-file.txt           | 4 ++++\n Documentation/git-check-attr.txt         | 4 ++++\n Documentation/git-check-ignore.txt       | 4 ++++\n Documentation/git-check-mailmap.txt      | 4 ++++\n Documentation/git-check-ref-format.txt   | 4 ++++\n Documentation/git-checkout-index.txt     | 4 ++++\n Documentation/git-checkout.txt           | 4 ++++\n Documentation/git-cherry-pick.txt        | 4 ++++\n Documentation/git-cherry.txt             | 4 ++++\n Documentation/git-citool.txt             | 4 ++++\n Documentation/git-clean.txt              | 4 ++++\n Documentation/git-clone.txt              | 4 ++++\n Documentation/git-column.txt             | 4 ++++\n Documentation/git-commit-tree.txt        | 4 ++++\n Documentation/git-commit.txt             | 4 ++++\n Documentation/git-config.txt             | 4 ++++\n Documentation/git-count-objects.txt      | 4 ++++\n Documentation/git-credential-cache.txt   | 4 ++++\n Documentation/git-credential-store.txt   | 4 ++++\n Documentation/git-credential.txt         | 4 ++++\n Documentation/git-cvsexportcommit.txt    | 4 ++++\n Documentation/git-cvsimport.txt          | 4 ++++\n Documentation/git-cvsserver.txt          | 4 ++++\n Documentation/git-daemon.txt             | 4 ++++\n Documentation/git-describe.txt           | 4 ++++\n Documentation/git-diff-files.txt         | 4 ++++\n Documentation/git-diff-index.txt         | 4 ++++\n Documentation/git-diff-tree.txt          | 4 ++++\n Documentation/git-diff.txt               | 4 ++++\n Documentation/git-difftool.txt           | 4 ++++\n Documentation/git-fast-export.txt        | 4 ++++\n Documentation/git-fast-import.txt        | 4 ++++\n Documentation/git-fetch-pack.txt         | 4 ++++\n Documentation/git-fetch.txt              | 4 ++++\n Documentation/git-filter-branch.txt      | 4 ++++\n Documentation/git-fmt-merge-msg.txt      | 4 ++++\n Documentation/git-for-each-ref.txt       | 4 ++++\n Documentation/git-format-patch.txt       | 4 ++++\n Documentation/git-fsck.txt               | 4 ++++\n Documentation/git-gc.txt                 | 4 ++++\n Documentation/git-get-tar-commit-id.txt  | 4 ++++\n Documentation/git-grep.txt               | 4 ++++\n Documentation/git-gui.txt                | 4 ++++\n Documentation/git-hash-object.txt        | 4 ++++\n Documentation/git-help.txt               | 4 ++++\n Documentation/git-http-backend.txt       | 4 ++++\n Documentation/git-http-fetch.txt         | 4 ++++\n Documentation/git-http-push.txt          | 4 ++++\n Documentation/git-imap-send.txt          | 4 ++++\n Documentation/git-index-pack.txt         | 4 ++++\n Documentation/git-init.txt               | 4 ++++\n Documentation/git-instaweb.txt           | 4 ++++\n Documentation/git-interpret-trailers.txt | 4 ++++\n Documentation/git-log.txt                | 4 ++++\n Documentation/git-ls-files.txt           | 4 ++++\n Documentation/git-ls-remote.txt          | 4 ++++\n Documentation/git-ls-tree.txt            | 4 ++++\n Documentation/git-mailinfo.txt           | 4 ++++\n Documentation/git-mailsplit.txt          | 4 ++++\n Documentation/git-merge-base.txt         | 4 ++++\n Documentation/git-merge-file.txt         | 4 ++++\n Documentation/git-merge-index.txt        | 4 ++++\n Documentation/git-merge-one-file.txt     | 4 ++++\n Documentation/git-merge-tree.txt         | 4 ++++\n Documentation/git-merge.txt              | 4 ++++\n Documentation/git-mergetool.txt          | 4 ++++\n Documentation/git-mktag.txt              | 4 ++++\n Documentation/git-mktree.txt             | 4 ++++\n Documentation/git-mv.txt                 | 4 ++++\n Documentation/git-name-rev.txt           | 4 ++++\n Documentation/git-notes.txt              | 4 ++++\n Documentation/git-p4.txt                 | 4 ++++\n Documentation/git-pack-objects.txt       | 4 ++++\n Documentation/git-pack-redundant.txt     | 4 ++++\n Documentation/git-pack-refs.txt          | 4 ++++\n Documentation/git-parse-remote.txt       | 4 ++++\n Documentation/git-patch-id.txt           | 4 ++++\n Documentation/git-prune-packed.txt       | 4 ++++\n Documentation/git-prune.txt              | 4 ++++\n Documentation/git-pull.txt               | 4 ++++\n Documentation/git-push.txt               | 4 ++++\n Documentation/git-quiltimport.txt        | 4 ++++\n Documentation/git-read-tree.txt          | 4 ++++\n Documentation/git-rebase.txt             | 4 ++++\n Documentation/git-receive-pack.txt       | 4 ++++\n Documentation/git-reflog.txt             | 4 ++++\n Documentation/git-relink.txt             | 4 ++++\n Documentation/git-remote.txt             | 4 ++++\n Documentation/git-repack.txt             | 4 ++++\n Documentation/git-replace.txt            | 4 ++++\n Documentation/git-request-pull.txt       | 4 ++++\n Documentation/git-rerere.txt             | 4 ++++\n Documentation/git-reset.txt              | 4 ++++\n Documentation/git-rev-list.txt           | 4 ++++\n Documentation/git-rev-parse.txt          | 4 ++++\n Documentation/git-revert.txt             | 4 ++++\n Documentation/git-rm.txt                 | 4 ++++\n Documentation/git-send-email.txt         | 4 ++++\n Documentation/git-send-pack.txt          | 4 ++++\n Documentation/git-sh-i18n.txt            | 4 ++++\n Documentation/git-sh-setup.txt           | 4 ++++\n Documentation/git-shell.txt              | 4 ++++\n Documentation/git-shortlog.txt           | 4 ++++\n Documentation/git-show-branch.txt        | 4 ++++\n Documentation/git-show-index.txt         | 4 ++++\n Documentation/git-show-ref.txt           | 4 ++++\n Documentation/git-show.txt               | 4 ++++\n Documentation/git-stash.txt              | 4 ++++\n Documentation/git-status.txt             | 4 ++++\n Documentation/git-stripspace.txt         | 4 ++++\n Documentation/git-submodule.txt          | 4 ++++\n Documentation/git-svn.txt                | 4 ++++\n Documentation/git-symbolic-ref.txt       | 4 ++++\n Documentation/git-tag.txt                | 4 ++++\n Documentation/git-unpack-file.txt        | 4 ++++\n Documentation/git-unpack-objects.txt     | 4 ++++\n Documentation/git-update-index.txt       | 4 ++++\n Documentation/git-update-ref.txt         | 4 ++++\n Documentation/git-update-server-info.txt | 4 ++++\n Documentation/git-upload-archive.txt     | 4 ++++\n Documentation/git-upload-pack.txt        | 4 ++++\n Documentation/git-var.txt                | 4 ++++\n Documentation/git-verify-commit.txt      | 4 ++++\n Documentation/git-verify-pack.txt        | 4 ++++\n Documentation/git-verify-tag.txt         | 4 ++++\n Documentation/git-whatchanged.txt        | 4 ++++\n Documentation/git-write-tree.txt         | 4 ++++\n Documentation/gitk.txt                   | 4 ++++\n Documentation/gitweb.txt                 | 4 ++++\n 139 files changed, 556 insertions(+)\n\ndiff --git a/Documentation/git-add.txt b/Documentation/git-add.txt\nindex 9631526..b6a8bc6 100644\n--- a/Documentation/git-add.txt\n+++ b/Documentation/git-add.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n \t  [--] [<pathspec>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n This command updates the index using the current content found in\ndiff --git a/Documentation/git-am.txt b/Documentation/git-am.txt\nindex 9adce37..b2bbe77 100644\n--- a/Documentation/git-am.txt\n+++ b/Documentation/git-am.txt\n@@ -18,6 +18,10 @@ SYNOPSIS\n \t [(<mbox> | <Maildir>)...]\n 'git am' (--continue | --skip | --abort)\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Splits mail messages in a mailbox into commit log message,\ndiff --git a/Documentation/git-annotate.txt b/Documentation/git-annotate.txt\nindex 05fd482..f787838 100644\n--- a/Documentation/git-annotate.txt\n+++ b/Documentation/git-annotate.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git annotate' [options] file [revision]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Annotates each line in the given file with information from the commit\ndiff --git a/Documentation/git-apply.txt b/Documentation/git-apply.txt\nindex f605327..5eab3fa 100644\n--- a/Documentation/git-apply.txt\n+++ b/Documentation/git-apply.txt\n@@ -18,6 +18,10 @@ SYNOPSIS\n \t  [--exclude=<path>] [--include=<path>] [--directory=<root>]\n \t  [--verbose] [<patch>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads the supplied diff output (i.e. \"a patch\") and applies it to files.\ndiff --git a/Documentation/git-archimport.txt b/Documentation/git-archimport.txt\nindex 163b9f6..604b3ff 100644\n--- a/Documentation/git-archimport.txt\n+++ b/Documentation/git-archimport.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]\n                <archive/branch>[:<git-branch>] ...\n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n Imports a project from one or more Arch repositories. It will follow branches\ndiff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt\nindex cfa1e4e..b286d3e 100644\n--- a/Documentation/git-archive.txt\n+++ b/Documentation/git-archive.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t      [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>\n \t      [<path>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Creates an archive of the specified format containing the tree\ndiff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt\nindex 4cb52a7..79e4526 100644\n--- a/Documentation/git-bisect.txt\n+++ b/Documentation/git-bisect.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git bisect' <subcommand> <options>\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n The command takes various subcommands, and different options depending\ndiff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt\nindex 9f23a86..88c014f 100644\n--- a/Documentation/git-blame.txt\n+++ b/Documentation/git-blame.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n \t    [-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]\n \t    [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>] [--] <file>\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt\nindex 311b336..f751bc9 100644\n--- a/Documentation/git-branch.txt\n+++ b/Documentation/git-branch.txt\n@@ -19,6 +19,10 @@ SYNOPSIS\n 'git branch' (-d | -D) [-r] <branchname>...\n 'git branch' --edit-description [<branchname>]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 0417562..21980ae 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n 'git bundle' list-heads <file> [<refname>...]\n 'git bundle' unbundle <file> [<refname>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt\nindex f6a16f4..9bf2c61 100644\n--- a/Documentation/git-cat-file.txt\n+++ b/Documentation/git-cat-file.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git cat-file' (-t | -s | -e | -p | <type> | --textconv ) <object>\n 'git cat-file' (--batch | --batch-check) < <list-of-objects>\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n In its first form, the command provides the content or the type of an object in\ndiff --git a/Documentation/git-check-attr.txt b/Documentation/git-check-attr.txt\nindex 00e2aa2..fe45715 100644\n--- a/Documentation/git-check-attr.txt\n+++ b/Documentation/git-check-attr.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git check-attr' [-a | --all | attr...] [--] pathname...\n 'git check-attr' --stdin [-z] [-a | --all | attr...] < <list-of-paths>\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n For every pathname, this command will list if each attribute is 'unspecified',\ndiff --git a/Documentation/git-check-ignore.txt b/Documentation/git-check-ignore.txt\nindex ee2e091..142560b 100644\n--- a/Documentation/git-check-ignore.txt\n+++ b/Documentation/git-check-ignore.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git check-ignore' [options] pathname...\n 'git check-ignore' [options] --stdin < <list-of-paths>\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-check-mailmap.txt b/Documentation/git-check-mailmap.txt\nindex 39028ee..5eb9fc7 100644\n--- a/Documentation/git-check-mailmap.txt\n+++ b/Documentation/git-check-mailmap.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git check-mailmap' [options] <contact>...\n \n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt\nindex fc02959..4868ccb 100644\n--- a/Documentation/git-check-ref-format.txt\n+++ b/Documentation/git-check-ref-format.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n        <refname>\n 'git check-ref-format' --branch <branchname-shorthand>\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n Checks if a given 'refname' is acceptable, and exits with a non-zero\ndiff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt\nindex 4d33e7b..cec0677 100644\n--- a/Documentation/git-checkout-index.txt\n+++ b/Documentation/git-checkout-index.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n \t\t   [-z] [--stdin]\n \t\t   [--] [<file>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Will copy all files listed from the index to the working directory\ndiff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt\nindex 33ad2ad..69ed9db 100644\n--- a/Documentation/git-checkout.txt\n+++ b/Documentation/git-checkout.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>...\n 'git checkout' [-p|--patch] [<tree-ish>] [--] [<paths>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Updates files in the working tree to match the version in the index\ndiff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt\nindex 1c03c79..f301edf 100644\n--- a/Documentation/git-cherry-pick.txt\n+++ b/Documentation/git-cherry-pick.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n 'git cherry-pick' --quit\n 'git cherry-pick' --abort\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-cherry.txt b/Documentation/git-cherry.txt\nindex 0ea921a..f0751f6 100644\n--- a/Documentation/git-cherry.txt\n+++ b/Documentation/git-cherry.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git cherry' [-v] [<upstream> [<head> [<limit>]]]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Determine whether there are commits in `<head>..<upstream>` that are\ndiff --git a/Documentation/git-citool.txt b/Documentation/git-citool.txt\nindex c7a11c3..bd585e9 100644\n--- a/Documentation/git-citool.txt\n+++ b/Documentation/git-citool.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git citool'\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n A Tcl/Tk based graphical interface to review modified files, stage\ndiff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt\nindex 94b6d19..1a6e068 100644\n--- a/Documentation/git-clean.txt\n+++ b/Documentation/git-clean.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git clean' [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>...\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt\nindex f1f2a3f..7c1c496 100644\n--- a/Documentation/git-clone.txt\n+++ b/Documentation/git-clone.txt\n@@ -17,6 +17,10 @@ SYNOPSIS\n \t  [--recursive | --recurse-submodules] [--] <repository>\n \t  [<directory>]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-column.txt b/Documentation/git-column.txt\nindex 03d1846..368dec9 100644\n--- a/Documentation/git-column.txt\n+++ b/Documentation/git-column.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n 'git column' [--command=<name>] [--[raw-]mode=<mode>] [--width=<width>]\n \t     [--indent=<string>] [--nl=<string>] [--padding=<n>]\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n This command formats its input into multiple columns.\ndiff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt\nindex a469eab..56c8cb1 100644\n--- a/Documentation/git-commit-tree.txt\n+++ b/Documentation/git-commit-tree.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t\t  [(-F <file>)...] <tree>\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n This is usually not what an end user wants to run directly.  See\ndiff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt\nindex 1e74b75..06129f8 100644\n--- a/Documentation/git-commit.txt\n+++ b/Documentation/git-commit.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n \t   [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n \t   [-i | -o] [-S[<key-id>]] [--] [<file>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Stores the current contents of the index in a new commit along\ndiff --git a/Documentation/git-config.txt b/Documentation/git-config.txt\nindex 9dfa1a5..e324c50 100644\n--- a/Documentation/git-config.txt\n+++ b/Documentation/git-config.txt\n@@ -25,6 +25,10 @@ SYNOPSIS\n 'git config' [<file-option>] --get-colorbool name [stdout-is-tty]\n 'git config' [<file-option>] -e | --edit\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n You can query/set/replace/unset options with this command. The name is\ndiff --git a/Documentation/git-count-objects.txt b/Documentation/git-count-objects.txt\nindex 2ff3568..702bedc 100644\n--- a/Documentation/git-count-objects.txt\n+++ b/Documentation/git-count-objects.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git count-objects' [-v] [-H | --human-readable]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n This counts the number of unpacked object files and disk space consumed by\ndiff --git a/Documentation/git-credential-cache.txt b/Documentation/git-credential-cache.txt\nindex 89b7306..9fa2d4a 100644\n--- a/Documentation/git-credential-cache.txt\n+++ b/Documentation/git-credential-cache.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n git config credential.helper 'cache [options]'\n -----------------------------\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-credential-store.txt b/Documentation/git-credential-store.txt\nindex bc97071..a3bb7b3 100644\n--- a/Documentation/git-credential-store.txt\n+++ b/Documentation/git-credential-store.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n git config credential.helper 'store [options]'\n -------------------\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-credential.txt b/Documentation/git-credential.txt\nindex b211440..45b2e8e 100644\n--- a/Documentation/git-credential.txt\n+++ b/Documentation/git-credential.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n git credential <fill|approve|reject>\n ------------------\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-cvsexportcommit.txt b/Documentation/git-cvsexportcommit.txt\nindex 00154b6..fd4ca97 100644\n--- a/Documentation/git-cvsexportcommit.txt\n+++ b/Documentation/git-cvsexportcommit.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t[-w cvsworkdir] [-W] [-f] [-m msgprefix] [PARENTCOMMIT] COMMITID\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n Exports a commit from Git to a CVS checkout, making it easier\ndiff --git a/Documentation/git-cvsimport.txt b/Documentation/git-cvsimport.txt\nindex 00a0679..d3791ca 100644\n--- a/Documentation/git-cvsimport.txt\n+++ b/Documentation/git-cvsimport.txt\n@@ -16,6 +16,10 @@ SYNOPSIS\n \t      [-r <remote>] [-R] [<CVS_module>]\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n *WARNING:* `git cvsimport` uses cvsps version 2, which is considered\ndiff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt\nindex 4961f1a..12f029c 100644\n--- a/Documentation/git-cvsserver.txt\n+++ b/Documentation/git-cvsserver.txt\n@@ -57,6 +57,10 @@ access still needs to be enabled by the `gitcvs.enabled` config option\n unless '--export-all' was given, too.\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt\nindex a69b361..b9780b9 100644\n--- a/Documentation/git-daemon.txt\n+++ b/Documentation/git-daemon.txt\n@@ -22,6 +22,10 @@ SYNOPSIS\n \t      [--user=<user> [--group=<group>]]]\n \t     [<directory>...]\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n A really simple TCP Git daemon that normally listens on port \"DEFAULT_GIT_PORT\"\ndiff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt\nindex d20ca40..076fbb3 100644\n--- a/Documentation/git-describe.txt\n+++ b/Documentation/git-describe.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <commit-ish>...\n 'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n The command finds the most recent tag that is reachable from a\ndiff --git a/Documentation/git-diff-files.txt b/Documentation/git-diff-files.txt\nindex 906774f..3e619ae 100644\n--- a/Documentation/git-diff-files.txt\n+++ b/Documentation/git-diff-files.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git diff-files' [-q] [-0|-1|-2|-3|-c|--cc] [<common diff options>] [<path>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Compares the files in the working tree and the index.  When paths\ndiff --git a/Documentation/git-diff-index.txt b/Documentation/git-diff-index.txt\nindex a86cf62..2699479 100644\n--- a/Documentation/git-diff-index.txt\n+++ b/Documentation/git-diff-index.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git diff-index' [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Compares the content and mode of the blobs found in a tree object\ndiff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt\nindex 1439486..13cc130 100644\n--- a/Documentation/git-diff-tree.txt\n+++ b/Documentation/git-diff-tree.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t      [-t] [-r] [-c | --cc] [--root] [<common diff options>]\n \t      <tree-ish> [<tree-ish>] [<path>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Compares the content and mode of the blobs found via two tree objects.\ndiff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt\nindex bbab35f..c34f697 100644\n--- a/Documentation/git-diff.txt\n+++ b/Documentation/git-diff.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git diff' [options] <blob> <blob>\n 'git diff' [options] [--no-index] [--] <path> <path>\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Show changes between the working tree and the index or a tree, changes\ndiff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt\nindex 333cf6f..9f0e125 100644\n--- a/Documentation/git-difftool.txt\n+++ b/Documentation/git-difftool.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git difftool' [<options>] [<commit> [<commit>]] [--] [<path>...]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n 'git difftool' is a Git command that allows you to compare and edit files\ndiff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt\nindex 929e496..3db709e 100644\n--- a/Documentation/git-fast-export.txt\n+++ b/Documentation/git-fast-export.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git fast-export [options]' | 'git fast-import'\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n This program dumps the given revisions in a form suitable to be piped\ndiff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt\nindex f71fb01..ff54241 100644\n--- a/Documentation/git-fast-import.txt\n+++ b/Documentation/git-fast-import.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n frontend | 'git fast-import' [options]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n This program is usually not what the end user wants to run directly.\ndiff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt\nindex 93b5067..65b6b3f 100644\n--- a/Documentation/git-fetch-pack.txt\n+++ b/Documentation/git-fetch-pack.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t[--depth=<n>] [--no-progress]\n \t[-v] <repository> [<refs>...]\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Usually you would want to use 'git fetch', which is a\ndiff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt\nindex 8deb614..eebdd06 100644\n--- a/Documentation/git-fetch.txt\n+++ b/Documentation/git-fetch.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git fetch' --all [<options>]\n \n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Fetch branches and/or tags (collectively, \"refs\") from one or more\ndiff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt\nindex 73fd9e8..32cfbd0 100644\n--- a/Documentation/git-filter-branch.txt\n+++ b/Documentation/git-filter-branch.txt\n@@ -16,6 +16,10 @@ SYNOPSIS\n \t[--original <namespace>] [-d <directory>] [-f | --force]\n \t[--] [<rev-list options>...]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n Lets you rewrite Git revision history by rewriting the branches mentioned\ndiff --git a/Documentation/git-fmt-merge-msg.txt b/Documentation/git-fmt-merge-msg.txt\nindex bb1232a..be0c92d 100644\n--- a/Documentation/git-fmt-merge-msg.txt\n+++ b/Documentation/git-fmt-merge-msg.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] <$GIT_DIR/FETCH_HEAD\n 'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] -F <file>\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n Takes the list of merged objects on stdin and produces a suitable\ndiff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt\nindex 4240875..7bf43bf 100644\n--- a/Documentation/git-for-each-ref.txt\n+++ b/Documentation/git-for-each-ref.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n 'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]\n \t\t   [(--sort=<key>)...] [--format=<format>] [<pattern>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\nindex c0fd470..769d6ea 100644\n--- a/Documentation/git-format-patch.txt\n+++ b/Documentation/git-format-patch.txt\n@@ -25,6 +25,10 @@ SYNOPSIS\n \t\t   [<common diff options>]\n \t\t   [ <since> | <revision range> ]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-fsck.txt b/Documentation/git-fsck.txt\nindex 25c431d..32ea7fb 100644\n--- a/Documentation/git-fsck.txt\n+++ b/Documentation/git-fsck.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t [--[no-]full] [--strict] [--verbose] [--lost-found]\n \t [--[no-]dangling] [--[no-]progress] [<object>*]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Verifies the connectivity and validity of the objects in the database.\ndiff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt\nindex 273c466..21025b6 100644\n--- a/Documentation/git-gc.txt\n+++ b/Documentation/git-gc.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Runs a number of housekeeping tasks within the current repository,\ndiff --git a/Documentation/git-get-tar-commit-id.txt b/Documentation/git-get-tar-commit-id.txt\nindex 1e2a20d..60ebd5e 100644\n--- a/Documentation/git-get-tar-commit-id.txt\n+++ b/Documentation/git-get-tar-commit-id.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git get-tar-commit-id' < <tarfile>\n \n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Acts as a filter, extracting the commit ID stored in archives created by\ndiff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt\nindex 31811f1..d1fc9ce 100644\n--- a/Documentation/git-grep.txt\n+++ b/Documentation/git-grep.txt\n@@ -28,6 +28,10 @@ SYNOPSIS\n \t   [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>...]\n \t   [--] [<pathspec>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Look for specified patterns in the tracked files in the work tree, blobs\ndiff --git a/Documentation/git-gui.txt b/Documentation/git-gui.txt\nindex 8144527..84ddd2f 100644\n--- a/Documentation/git-gui.txt\n+++ b/Documentation/git-gui.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git gui' [<command>] [arguments]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n A Tcl/Tk based graphical user interface to Git.  'git gui' focuses\ndiff --git a/Documentation/git-hash-object.txt b/Documentation/git-hash-object.txt\nindex 02c1f12..28e59cd 100644\n--- a/Documentation/git-hash-object.txt\n+++ b/Documentation/git-hash-object.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git hash-object' [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] <file>...\n 'git hash-object' [-t <type>] [-w] --stdin-paths [--no-filters] < <list-of-paths>\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Computes the object ID value for an object with specified type\ndiff --git a/Documentation/git-help.txt b/Documentation/git-help.txt\nindex 3956525..588dff1 100644\n--- a/Documentation/git-help.txt\n+++ b/Documentation/git-help.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n 'git help' [-a|--all] [-g|--guide]\n \t   [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-http-backend.txt b/Documentation/git-http-backend.txt\nindex d422ba4..4869057 100644\n--- a/Documentation/git-http-backend.txt\n+++ b/Documentation/git-http-backend.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git http-backend'\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n A simple CGI program to serve the contents of a Git repository to Git\ndiff --git a/Documentation/git-http-fetch.txt b/Documentation/git-http-fetch.txt\nindex 21a33d2..d8927aa 100644\n--- a/Documentation/git-http-fetch.txt\n+++ b/Documentation/git-http-fetch.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [--stdin] <commit> <url>\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Downloads a remote Git repository via HTTP.\ndiff --git a/Documentation/git-http-push.txt b/Documentation/git-http-push.txt\nindex 2e67362..4ef4167 100644\n--- a/Documentation/git-http-push.txt\n+++ b/Documentation/git-http-push.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git http-push' [--all] [--dry-run] [--force] [--verbose] <url> <ref> [<ref>...]\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Sends missing objects to remote repository, and updates the\ndiff --git a/Documentation/git-imap-send.txt b/Documentation/git-imap-send.txt\nindex 77aacf1..262e5e3 100644\n--- a/Documentation/git-imap-send.txt\n+++ b/Documentation/git-imap-send.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git imap-send' [-v] [-q] [--[no-]curl]\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n This command uploads a mailbox generated with 'git format-patch'\ndiff --git a/Documentation/git-index-pack.txt b/Documentation/git-index-pack.txt\nindex 7a4e055..1df3932 100644\n--- a/Documentation/git-index-pack.txt\n+++ b/Documentation/git-index-pack.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n                  [<pack-file>]\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads a packed archive (.pack) from the specified file, and\ndiff --git a/Documentation/git-init.txt b/Documentation/git-init.txt\nindex 369f889..deb2a71 100644\n--- a/Documentation/git-init.txt\n+++ b/Documentation/git-init.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t  [--shared[=<permissions>]] [directory]\n \n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt\nindex f3eef51..6dafc98 100644\n--- a/Documentation/git-instaweb.txt\n+++ b/Documentation/git-instaweb.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n                [--browser=<browser>]\n 'git instaweb' [--start] [--stop] [--restart]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n A simple script to set up `gitweb` and a web server for browsing the local\ndiff --git a/Documentation/git-interpret-trailers.txt b/Documentation/git-interpret-trailers.txt\nindex d6d9231..94f3479 100644\n--- a/Documentation/git-interpret-trailers.txt\n+++ b/Documentation/git-interpret-trailers.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git interpret-trailers' [--trim-empty] [(--trailer <token>[(=|:)<value>])...] [<file>...]\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n Help adding 'trailers' lines, that look similar to RFC 822 e-mail\ndiff --git a/Documentation/git-log.txt b/Documentation/git-log.txt\nindex 1f7bc67..b85d172 100644\n--- a/Documentation/git-log.txt\n+++ b/Documentation/git-log.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git log' [<options>] [<revision range>] [[\\--] <path>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Shows the commit logs.\ndiff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt\nindex e26f01f..c190f0c 100644\n--- a/Documentation/git-ls-files.txt\n+++ b/Documentation/git-ls-files.txt\n@@ -19,6 +19,10 @@ SYNOPSIS\n \t\t[--error-unmatch] [--with-tree=<tree-ish>]\n \t\t[--full-name] [--abbrev] [--] [<file>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n This merges the file listing in the directory cache index with the\ndiff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt\nindex 2e22915..8b69dce 100644\n--- a/Documentation/git-ls-remote.txt\n+++ b/Documentation/git-ls-remote.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git ls-remote' [--heads] [--tags]  [-u <exec> | --upload-pack <exec>]\n \t      [--exit-code] <repository> [<refs>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Displays references available in a remote repository along with the associated\ndiff --git a/Documentation/git-ls-tree.txt b/Documentation/git-ls-tree.txt\nindex 16e87fd..7fd6c14 100644\n--- a/Documentation/git-ls-tree.txt\n+++ b/Documentation/git-ls-tree.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t    [--name-only] [--name-status] [--full-name] [--full-tree] [--abbrev[=<n>]]\n \t    <tree-ish> [<path>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Lists the contents of a given tree object, like what \"/bin/ls -a\" does\ndiff --git a/Documentation/git-mailinfo.txt b/Documentation/git-mailinfo.txt\nindex 164a3c6..2146840 100644\n--- a/Documentation/git-mailinfo.txt\n+++ b/Documentation/git-mailinfo.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git mailinfo' [-k|-b] [-u | --encoding=<encoding> | -n] [--[no-]scissors] <msg> <patch>\n \n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n Reads a single e-mail message from the standard input, and\ndiff --git a/Documentation/git-mailsplit.txt b/Documentation/git-mailsplit.txt\nindex 4d1b871..36f14fa 100644\n--- a/Documentation/git-mailsplit.txt\n+++ b/Documentation/git-mailsplit.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git mailsplit' [-b] [-f<nn>] [-d<prec>] [--keep-cr] -o<directory> [--] [(<mbox>|<Maildir>)...]\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n Splits a mbox file or a Maildir into a list of files: \"0001\" \"0002\" ..  in the\ndiff --git a/Documentation/git-merge-base.txt b/Documentation/git-merge-base.txt\nindex 808426f..a0b8a90 100644\n--- a/Documentation/git-merge-base.txt\n+++ b/Documentation/git-merge-base.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git merge-base' --independent <commit>...\n 'git merge-base' --fork-point <ref> [<commit>]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-merge-file.txt b/Documentation/git-merge-file.txt\nindex d2fc12e..2d66401 100644\n--- a/Documentation/git-merge-file.txt\n+++ b/Documentation/git-merge-file.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t[--[no-]diff3] <current-file> <base-file> <other-file>\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n 'git merge-file' incorporates all changes that lead from the `<base-file>`\ndiff --git a/Documentation/git-merge-index.txt b/Documentation/git-merge-index.txt\nindex 02676fb..2184287 100644\n--- a/Documentation/git-merge-index.txt\n+++ b/Documentation/git-merge-index.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git merge-index' [-o] [-q] <merge-program> (-a | [--] <file>*)\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n This looks up the <file>(s) in the index and, if there are any merge\ndiff --git a/Documentation/git-merge-one-file.txt b/Documentation/git-merge-one-file.txt\nindex 04e803d..694fe9f 100644\n--- a/Documentation/git-merge-one-file.txt\n+++ b/Documentation/git-merge-one-file.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git merge-one-file'\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n This is the standard helper program to use with 'git merge-index'\ndiff --git a/Documentation/git-merge-tree.txt b/Documentation/git-merge-tree.txt\nindex 58731c1..5d003b5 100644\n--- a/Documentation/git-merge-tree.txt\n+++ b/Documentation/git-merge-tree.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git merge-tree' <base-tree> <branch1> <branch2>\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Reads three tree-ish, and output trivial merge results and\ndiff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt\nindex cf2c374..c489d3d 100644\n--- a/Documentation/git-merge.txt\n+++ b/Documentation/git-merge.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git merge' <msg> HEAD <commit>...\n 'git merge' --abort\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Incorporates changes from the named commits (since the time their\ndiff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt\nindex e846c2e..160e79e 100644\n--- a/Documentation/git-mergetool.txt\n+++ b/Documentation/git-mergetool.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git mergetool' [--tool=<tool>] [-y | --[no-]prompt] [<file>...]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-mktag.txt b/Documentation/git-mktag.txt\nindex 3ca158b..87d2328 100644\n--- a/Documentation/git-mktag.txt\n+++ b/Documentation/git-mktag.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git mktag' < signature_file\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads a tag contents on standard input and creates a tag object\ndiff --git a/Documentation/git-mktree.txt b/Documentation/git-mktree.txt\nindex 5c6ebdf..8f9ad4e 100644\n--- a/Documentation/git-mktree.txt\n+++ b/Documentation/git-mktree.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git mktree' [-z] [--missing] [--batch]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads standard input in non-recursive `ls-tree` output format, and creates\ndiff --git a/Documentation/git-mv.txt b/Documentation/git-mv.txt\nindex e453132..4e6778f 100644\n--- a/Documentation/git-mv.txt\n+++ b/Documentation/git-mv.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git mv' <options>... <args>...\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Move or rename a file, directory or symlink.\ndiff --git a/Documentation/git-name-rev.txt b/Documentation/git-name-rev.txt\nindex ca28fb8..802fbfb 100644\n--- a/Documentation/git-name-rev.txt\n+++ b/Documentation/git-name-rev.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git name-rev' [--tags] [--refs=<pattern>]\n \t       ( --all | --stdin | <commit-ish>... )\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Finds symbolic names suitable for human digestion for revisions given in any\ndiff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt\nindex 851518d..84a5b4a 100644\n--- a/Documentation/git-notes.txt\n+++ b/Documentation/git-notes.txt\n@@ -22,6 +22,10 @@ SYNOPSIS\n 'git notes' get-ref\n \n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Adds, removes, or reads notes attached to objects, without touching\ndiff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt\nindex 6ab5f94..ae93e5d 100644\n--- a/Documentation/git-p4.txt\n+++ b/Documentation/git-p4.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n 'git p4 submit' [<submit options>] [<master branch name>]\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n This command provides a way to interact with p4 repositories\ndiff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt\nindex d2d8f47..b538f6f 100644\n--- a/Documentation/git-pack-objects.txt\n+++ b/Documentation/git-pack-objects.txt\n@@ -16,6 +16,10 @@ SYNOPSIS\n \t[--keep-true-parents] < object-list\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads list of objects from the standard input, and writes a packed\ndiff --git a/Documentation/git-pack-redundant.txt b/Documentation/git-pack-redundant.txt\nindex f2869da..b5c3e92 100644\n--- a/Documentation/git-pack-redundant.txt\n+++ b/Documentation/git-pack-redundant.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git pack-redundant' [ --verbose ] [ --alt-odb ] < --all | .pack filename ... >\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n This program computes which packs in your repository\ndiff --git a/Documentation/git-pack-refs.txt b/Documentation/git-pack-refs.txt\nindex 154081f..c7eb11c 100644\n--- a/Documentation/git-pack-refs.txt\n+++ b/Documentation/git-pack-refs.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git pack-refs' [--all] [--no-prune]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\nindex a45ea1e..b9ca527 100644\n--- a/Documentation/git-parse-remote.txt\n+++ b/Documentation/git-parse-remote.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n '. \"$(git --exec-path)/git-parse-remote\"'\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n This script is included in various scripts to supply\ndiff --git a/Documentation/git-patch-id.txt b/Documentation/git-patch-id.txt\nindex 31efc58..79cf162 100644\n--- a/Documentation/git-patch-id.txt\n+++ b/Documentation/git-patch-id.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git patch-id' [--stable | --unstable] < <patch>\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n A \"patch ID\" is nothing but a sum of SHA-1 of the file diffs associated with a\ndiff --git a/Documentation/git-prune-packed.txt b/Documentation/git-prune-packed.txt\nindex 9fed59a..2c2b602 100644\n--- a/Documentation/git-prune-packed.txt\n+++ b/Documentation/git-prune-packed.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git prune-packed' [-n|--dry-run] [-q|--quiet]\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n This program searches the `$GIT_OBJECT_DIRECTORY` for all objects that currently\ndiff --git a/Documentation/git-prune.txt b/Documentation/git-prune.txt\nindex 7a493c8..11d0733 100644\n--- a/Documentation/git-prune.txt\n+++ b/Documentation/git-prune.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git prune' [-n] [-v] [--expire <expire>] [--] [<head>...]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt\nindex 200eb22..e3a4086 100644\n--- a/Documentation/git-pull.txt\n+++ b/Documentation/git-pull.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git pull' [options] [<repository> [<refspec>...]]\n \n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-push.txt b/Documentation/git-push.txt\nindex b17283a..56b4a72 100644\n--- a/Documentation/git-push.txt\n+++ b/Documentation/git-push.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n \t   [--force-with-lease[=<refname>[:<expect>]]]\n \t   [--no-verify] [<repository> [<refspec>...]]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-quiltimport.txt b/Documentation/git-quiltimport.txt\nindex d64388c..a1a56da 100644\n--- a/Documentation/git-quiltimport.txt\n+++ b/Documentation/git-quiltimport.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git quiltimport' [--dry-run | -n] [--author <author>] [--patches <dir>]\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n Applies a quilt patchset onto the current Git branch, preserving\ndiff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt\nindex fa1d557..b8c93d5 100644\n--- a/Documentation/git-read-tree.txt\n+++ b/Documentation/git-read-tree.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n \t\t(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads the tree information given by <tree-ish> into the index,\ndiff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\nindex 924827d..a965eaf 100644\n--- a/Documentation/git-rebase.txt\n+++ b/Documentation/git-rebase.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n \t--root [<branch>]\n 'git rebase' --continue | --skip | --abort | --edit-todo\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n If <branch> is specified, 'git rebase' will perform an automatic\ndiff --git a/Documentation/git-receive-pack.txt b/Documentation/git-receive-pack.txt\nindex 9016960..8c0ee58 100644\n--- a/Documentation/git-receive-pack.txt\n+++ b/Documentation/git-receive-pack.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git-receive-pack' <directory>\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Invoked by 'git send-pack' and updates the repository with the\ndiff --git a/Documentation/git-reflog.txt b/Documentation/git-reflog.txt\nindex 70791b9..87eddeb 100644\n--- a/Documentation/git-reflog.txt\n+++ b/Documentation/git-reflog.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git reflog' <subcommand> <options>\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n The command takes various subcommands, and different options\ndiff --git a/Documentation/git-relink.txt b/Documentation/git-relink.txt\nindex 3b33c99..3ade32f 100644\n--- a/Documentation/git-relink.txt\n+++ b/Documentation/git-relink.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git relink' [--safe] <dir>... <master_dir>\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n This will scan 1 or more object repositories and look for objects in common\ndiff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt\nindex cb103c8..5e76d5c 100644\n--- a/Documentation/git-remote.txt\n+++ b/Documentation/git-remote.txt\n@@ -22,6 +22,10 @@ SYNOPSIS\n 'git remote prune' [-n | --dry-run] <name>...\n 'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt\nindex 4786a78..2ac89fd 100644\n--- a/Documentation/git-repack.txt\n+++ b/Documentation/git-repack.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-replace.txt b/Documentation/git-replace.txt\nindex 8fff598..9d08d70 100644\n--- a/Documentation/git-replace.txt\n+++ b/Documentation/git-replace.txt\n@@ -14,6 +14,10 @@ SYNOPSIS\n 'git replace' -d <object>...\n 'git replace' [--format=<format>] [-l [<pattern>]]\n \n+CATEGORY\n+--------\n+Ancillary manipulator\n+\n DESCRIPTION\n -----------\n Adds a 'replace' reference in `refs/replace/` namespace.\ndiff --git a/Documentation/git-request-pull.txt b/Documentation/git-request-pull.txt\nindex 283577b..ddd77bc 100644\n--- a/Documentation/git-request-pull.txt\n+++ b/Documentation/git-request-pull.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git request-pull' [-p] <start> <url> [<end>]\n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-rerere.txt b/Documentation/git-rerere.txt\nindex a62227f..a27db48 100644\n--- a/Documentation/git-rerere.txt\n+++ b/Documentation/git-rerere.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git rerere' ['clear'|'forget' <pathspec>|'diff'|'remaining'|'status'|'gc']\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt\nindex 25432d9..7e520eb 100644\n--- a/Documentation/git-reset.txt\n+++ b/Documentation/git-reset.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git reset' (--patch | -p) [<tree-ish>] [--] [<paths>...]\n 'git reset' [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n In the first and second form, copy entries from <tree-ish> to the index.\ndiff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt\nindex fd7f8b5..3629841 100644\n--- a/Documentation/git-rev-list.txt\n+++ b/Documentation/git-rev-list.txt\n@@ -58,6 +58,10 @@ SYNOPSIS\n \t     [ \\--use-bitmap-index ]\n \t     <commit>... [ \\-- <paths>... ]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt\nindex d6de42f..7675ce2 100644\n--- a/Documentation/git-rev-parse.txt\n+++ b/Documentation/git-rev-parse.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git rev-parse' [ --option ] <args>...\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt\nindex cceb5f2..0da41fa 100644\n--- a/Documentation/git-revert.txt\n+++ b/Documentation/git-revert.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n 'git revert' --quit\n 'git revert' --abort\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-rm.txt b/Documentation/git-rm.txt\nindex f1efc11..a200089 100644\n--- a/Documentation/git-rm.txt\n+++ b/Documentation/git-rm.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git rm' [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>...\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Remove files from the index, or from the working tree and the index.\ndiff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt\nindex a60776e..3b091dc 100644\n--- a/Documentation/git-send-email.txt\n+++ b/Documentation/git-send-email.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git send-email' [options] <file|directory|rev-list options>...\n \n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n Takes the patches given on the command line and emails them out.\ndiff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt\nindex 2a0de42..23aaff6 100644\n--- a/Documentation/git-send-pack.txt\n+++ b/Documentation/git-send-pack.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Usually you would want to use 'git push', which is a\ndiff --git a/Documentation/git-sh-i18n.txt b/Documentation/git-sh-i18n.txt\nindex 60cf49c..c72a123 100644\n--- a/Documentation/git-sh-i18n.txt\n+++ b/Documentation/git-sh-i18n.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n '. \"$(git --exec-path)/git-sh-i18n\"'\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-sh-setup.txt b/Documentation/git-sh-setup.txt\nindex 4f67c4c..1cf7d63 100644\n--- a/Documentation/git-sh-setup.txt\n+++ b/Documentation/git-sh-setup.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n '. \"$(git --exec-path)/git-sh-setup\"'\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-shell.txt b/Documentation/git-shell.txt\nindex e4bdd22..76b8ce7 100644\n--- a/Documentation/git-shell.txt\n+++ b/Documentation/git-shell.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n 'git clone' <user>`@localhost:/path/to/repo.git`\n 'ssh' <user>`@localhost`\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-shortlog.txt b/Documentation/git-shortlog.txt\nindex 31af7f2..bdbd984 100644\n--- a/Documentation/git-shortlog.txt\n+++ b/Documentation/git-shortlog.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n git log --pretty=short | 'git shortlog' [<options>]\n 'git shortlog' [<options>] [<revision range>] [[\\--] <path>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Summarizes 'git log' output in a format suitable for inclusion\ndiff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt\nindex b91d4e5..0df8f12 100644\n--- a/Documentation/git-show-branch.txt\n+++ b/Documentation/git-show-branch.txt\n@@ -15,6 +15,10 @@ SYNOPSIS\n \t\t[(<rev> | <glob>)...]\n 'git show-branch' (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-show-index.txt b/Documentation/git-show-index.txt\nindex fbdc8ad..6abcca7 100644\n--- a/Documentation/git-show-index.txt\n+++ b/Documentation/git-show-index.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git show-index' < idx-file\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads given idx file for packed Git archive created with\ndiff --git a/Documentation/git-show-ref.txt b/Documentation/git-show-ref.txt\nindex 2a6f89b..bbfc496 100644\n--- a/Documentation/git-show-ref.txt\n+++ b/Documentation/git-show-ref.txt\n@@ -13,6 +13,10 @@ SYNOPSIS\n \t     [--heads] [--] [<pattern>...]\n 'git show-ref' --exclude-existing[=<pattern>] < ref-list\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-show.txt b/Documentation/git-show.txt\nindex 4e617e6..e1fe73c 100644\n--- a/Documentation/git-show.txt\n+++ b/Documentation/git-show.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git show' [options] <object>...\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Shows one or more objects (blobs, trees, tags and commits).\ndiff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt\nindex 375213f..35eb032 100644\n--- a/Documentation/git-stash.txt\n+++ b/Documentation/git-stash.txt\n@@ -19,6 +19,10 @@ SYNOPSIS\n 'git stash' create [<message>]\n 'git stash' store [-m|--message <message>] [-q|--quiet] <commit>\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-status.txt b/Documentation/git-status.txt\nindex 4d8d530..0af1b84 100644\n--- a/Documentation/git-status.txt\n+++ b/Documentation/git-status.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git status' [<options>...] [--] [<pathspec>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Displays paths that have differences between the index file and the\ndiff --git a/Documentation/git-stripspace.txt b/Documentation/git-stripspace.txt\nindex 6c6e989..a7b147e 100644\n--- a/Documentation/git-stripspace.txt\n+++ b/Documentation/git-stripspace.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git stripspace' [-s | --strip-comments] < input\n 'git stripspace' [-c | --comment-lines] < input\n \n+CATEGORY\n+--------\n+Helper command for script writers\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt\nindex 8e6af65..57804e8 100644\n--- a/Documentation/git-submodule.txt\n+++ b/Documentation/git-submodule.txt\n@@ -23,6 +23,10 @@ SYNOPSIS\n 'git submodule' [--quiet] sync [--recursive] [--] [<path>...]\n \n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Submodules allow foreign repositories to be embedded within\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex 39e9a18..1639842 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git svn' <command> [options] [arguments]\n \n+CATEGORY\n+--------\n+Interface to foreign SCM\n+\n DESCRIPTION\n -----------\n 'git svn' is a simple conduit for changesets between Subversion and Git.\ndiff --git a/Documentation/git-symbolic-ref.txt b/Documentation/git-symbolic-ref.txt\nindex ef68ad2..05db29e 100644\n--- a/Documentation/git-symbolic-ref.txt\n+++ b/Documentation/git-symbolic-ref.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git symbolic-ref' [-q] [--short] <name>\n 'git symbolic-ref' --delete [-q] <name>\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Given one argument, reads which branch head the given symbolic\ndiff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt\nindex e953ba4..76f8741 100644\n--- a/Documentation/git-tag.txt\n+++ b/Documentation/git-tag.txt\n@@ -17,6 +17,10 @@ SYNOPSIS\n \t[<pattern>...]\n 'git tag' -v <tagname>...\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-unpack-file.txt b/Documentation/git-unpack-file.txt\nindex e9f148a..df1188c 100644\n--- a/Documentation/git-unpack-file.txt\n+++ b/Documentation/git-unpack-file.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n [verse]\n 'git unpack-file' <blob>\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Creates a file holding the contents of the blob specified by sha1. It\ndiff --git a/Documentation/git-unpack-objects.txt b/Documentation/git-unpack-objects.txt\nindex 12cb108..0c25839 100644\n--- a/Documentation/git-unpack-objects.txt\n+++ b/Documentation/git-unpack-objects.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git unpack-objects' [-n] [-q] [-r] [--strict] < <pack-file>\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Read a packed archive (.pack) from the standard input, expanding\ndiff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt\nindex 929869b..8b846b7 100644\n--- a/Documentation/git-update-index.txt\n+++ b/Documentation/git-update-index.txt\n@@ -23,6 +23,10 @@ SYNOPSIS\n \t     [--verbose]\n \t     [--] [<file>...]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Modifies the index or directory cache. Each file mentioned is updated\ndiff --git a/Documentation/git-update-ref.txt b/Documentation/git-update-ref.txt\nindex c8f5ae5..3b03e8c 100644\n--- a/Documentation/git-update-ref.txt\n+++ b/Documentation/git-update-ref.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git update-ref' [-m <reason>] (-d <ref> [<oldvalue>] | [--no-deref] <ref> <newvalue> [<oldvalue>] | --stdin [-z])\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Given two arguments, stores the <newvalue> in the <ref>, possibly\ndiff --git a/Documentation/git-update-server-info.txt b/Documentation/git-update-server-info.txt\nindex bd0e364..c9d47cc 100644\n--- a/Documentation/git-update-server-info.txt\n+++ b/Documentation/git-update-server-info.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git update-server-info' [--force]\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n A dumb server that does not do on-the-fly pack generations must\ndiff --git a/Documentation/git-upload-archive.txt b/Documentation/git-upload-archive.txt\nindex cbef61b..63834e5 100644\n--- a/Documentation/git-upload-archive.txt\n+++ b/Documentation/git-upload-archive.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git upload-archive' <directory>\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Invoked by 'git archive --remote' and sends a generated archive to the\ndiff --git a/Documentation/git-upload-pack.txt b/Documentation/git-upload-pack.txt\nindex 0abc806..1d621ef 100644\n--- a/Documentation/git-upload-pack.txt\n+++ b/Documentation/git-upload-pack.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git-upload-pack' [--strict] [--timeout=<n>] <directory>\n \n+CATEGORY\n+--------\n+Commands used internally for synching repositories\n+\n DESCRIPTION\n -----------\n Invoked by 'git fetch-pack', learns what\ndiff --git a/Documentation/git-var.txt b/Documentation/git-var.txt\nindex 44ff954..3a407b9 100644\n--- a/Documentation/git-var.txt\n+++ b/Documentation/git-var.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git var' ( -l | <variable> )\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Prints a Git logical variable.\ndiff --git a/Documentation/git-verify-commit.txt b/Documentation/git-verify-commit.txt\nindex 9413e28..7d5e73e 100644\n--- a/Documentation/git-verify-commit.txt\n+++ b/Documentation/git-verify-commit.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git verify-commit' <commit>...\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Validates the gpg signature created by 'git commit -S'.\ndiff --git a/Documentation/git-verify-pack.txt b/Documentation/git-verify-pack.txt\nindex 526ba7b..2fa3e20 100644\n--- a/Documentation/git-verify-pack.txt\n+++ b/Documentation/git-verify-pack.txt\n@@ -12,6 +12,10 @@ SYNOPSIS\n 'git verify-pack' [-v|--verbose] [-s|--stat-only] [--] <pack>.idx ...\n \n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Reads given idx file for packed Git archive created with the\ndiff --git a/Documentation/git-verify-tag.txt b/Documentation/git-verify-tag.txt\nindex f88ba96..7da9f2b 100644\n--- a/Documentation/git-verify-tag.txt\n+++ b/Documentation/git-verify-tag.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'git verify-tag' <tag>...\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Validates the gpg signature created by 'git tag'.\ndiff --git a/Documentation/git-whatchanged.txt b/Documentation/git-whatchanged.txt\nindex 8b63ceb..637e94e 100644\n--- a/Documentation/git-whatchanged.txt\n+++ b/Documentation/git-whatchanged.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git whatchanged' <option>...\n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n \ndiff --git a/Documentation/git-write-tree.txt b/Documentation/git-write-tree.txt\nindex f22041a..cbc33be 100644\n--- a/Documentation/git-write-tree.txt\n+++ b/Documentation/git-write-tree.txt\n@@ -11,6 +11,10 @@ SYNOPSIS\n [verse]\n 'git write-tree' [--missing-ok] [--prefix=<prefix>/]\n \n+CATEGORY\n+--------\n+Low level command for script writers (plumbing)\n+\n DESCRIPTION\n -----------\n Creates a tree object using the current index. The name of the new\ndiff --git a/Documentation/gitk.txt b/Documentation/gitk.txt\nindex 7ae50aa..c7b0f51 100644\n--- a/Documentation/gitk.txt\n+++ b/Documentation/gitk.txt\n@@ -10,6 +10,10 @@ SYNOPSIS\n [verse]\n 'gitk' [<options>] [<revision range>] [\\--] [<path>...]\n \n+CATEGORY\n+--------\n+Main user interface command (porcelain)\n+\n DESCRIPTION\n -----------\n Displays changes in a repository or a selected set of commits. This includes\ndiff --git a/Documentation/gitweb.txt b/Documentation/gitweb.txt\nindex cd9c895..42b0cde 100644\n--- a/Documentation/gitweb.txt\n+++ b/Documentation/gitweb.txt\n@@ -12,6 +12,10 @@ This would configure and start your web server, and run web browser pointing to\n gitweb.\n \n \n+CATEGORY\n+--------\n+Ancillary interrogator\n+\n DESCRIPTION\n -----------\n Gitweb provides a web interface to Git repositories.  Its features include:\n-- \n2.2.0.345.g7041aac\n"},{"id":"253448","messageId":"xmqqiohklgbx.fsf@gitster.dls.corp.google.com","threadId":"38149","inReplyTo":"538d1a10bda3793ea10ec6f7de43de371d17e709.1418123780.git.git@drmicha.warpmail.net","subject":"Re: [RFD/PATCH] Documentation: mention category","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-12-09T20:26:58Z","receivedAt":"2014-12-09T20:26:58Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Michael J Gruber <git@drmicha.warpmail.net> writes:\n\n> Rather than changing git-foo.txt, we could do the substitution magic\n> from Documentation/Makefile, of course, to keep man pages and command-list\n> in sync. Although this would keep me from submitting the final series\n> with 1 patch per file :)\n\nI do not get that smiley.  Are you saying that these noisy patches\nadd to your karma points?\n\n> diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt\n> index 9631526..b6a8bc6 100644\n> --- a/Documentation/git-add.txt\n> +++ b/Documentation/git-add.txt\n> @@ -13,6 +13,10 @@ SYNOPSIS\n>  \t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n>  \t  [--] [<pathspec>...]\n>  \n> +CATEGORY\n> +--------\n> +Main user interface command (porcelain)\n> +\n>  DESCRIPTION\n>  -----------\n\nWhile I do not have objection to adding this information, I have\na few problems with the execution:\n\n - These four lines at the very beginning is a precious real\n   estate.  The new reader would not benefit from the distinction\n   before reading the first paragraph of description to learn what\n   it does and what it is for anyway.  Move it much later, perhaps\n   at the end.\n\n - A phrase \"Main user interface command\" to a new user does not\n   help very much if it does not tell enough what that phrase really\n   means (e.g. you should not be using it for scripting).  Extend\n   the description more, after moving it to the end.\n\n - As you said, this should be done in a way to keep the two sources\n   of information in sync.  Either add these from command-list, or\n   generate command-list from these.\n"},{"id":"253502","messageId":"54885C8A.1030300@drmicha.warpmail.net","threadId":"38149","inReplyTo":"xmqqiohklgbx.fsf@gitster.dls.corp.google.com","subject":"Re: [RFD/PATCH] Documentation: mention category","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2014-12-10T14:45:30Z","receivedAt":"2014-12-10T14:45:30Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Junio C Hamano schrieb am 09.12.2014 um 21:26:\n> Michael J Gruber <git@drmicha.warpmail.net> writes:\n> \n>> Rather than changing git-foo.txt, we could do the substitution magic\n>> from Documentation/Makefile, of course, to keep man pages and command-list\n>> in sync. Although this would keep me from submitting the final series\n>> with 1 patch per file :)\n> \n> I do not get that smiley.  Are you saying that these noisy patches\n> add to your karma points?\n\nWell, I didn't and I won't send them as 1p/f. Have I ever split my\npatches noisilly atomically?\n\n>> diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt\n>> index 9631526..b6a8bc6 100644\n>> --- a/Documentation/git-add.txt\n>> +++ b/Documentation/git-add.txt\n>> @@ -13,6 +13,10 @@ SYNOPSIS\n>>  \t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n>>  \t  [--] [<pathspec>...]\n>>  \n>> +CATEGORY\n>> +--------\n>> +Main user interface command (porcelain)\n>> +\n>>  DESCRIPTION\n>>  -----------\n> \n> While I do not have objection to adding this information, I have\n> a few problems with the execution:\n> \n>  - These four lines at the very beginning is a precious real\n>    estate.  The new reader would not benefit from the distinction\n>    before reading the first paragraph of description to learn what\n>    it does and what it is for anyway.  Move it much later, perhaps\n>    at the end.\n\nThen we can just leave it out.\n\nThe aim is to give new(er) users some orientation about which commands\nto use and which to stay away from, unless they want to do scripting.\nThere's no point in putting a stop sign at the end of the road.\n\nThis series was triggered by the recent update-index discussion. I think\nit showed: Sometimes users get confused by the plumbing man pages who\nshouldn't even read them at all (and rather stick with porcelain commands).\n\n>  - A phrase \"Main user interface command\" to a new user does not\n>    help very much if it does not tell enough what that phrase really\n>    means (e.g. you should not be using it for scripting).  Extend\n>    the description more, after moving it to the end.\n\nI'm all open for different wording, this is just a POC. Even though I\nthink that it should be okay to use a term like porcelain (defined in\nthe glossary) the same way as we use other central terms (revision,\nobject) which we don't spell out in each man page. The point is to give\nsome direction.\n\n>  - As you said, this should be done in a way to keep the two sources\n>    of information in sync.  Either add these from command-list, or\n>    generate command-list from these.\n\nDoes the categorisation change a lot? My impression is that this is a\none-time business like adding a new command, which causes redundant work\nalready.\n\nIf we really want to automate it, Doc/Makefile would probably need to\ntranslate foo.txt to foo.txt+ and operate on that. I'm not sure\nautomatisation is worth that effort.\n\nMichael\n"}]}