All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] git-help: find library man pages again
@ 2010-09-01 16:02 Michael J Gruber
  2010-09-01 16:07 ` Michael J Gruber
  2010-09-02  8:16 ` Jonathan Nieder
  0 siblings, 2 replies; 7+ messages in thread
From: Michael J Gruber @ 2010-09-01 16:02 UTC (permalink / raw)
  To: git; +Cc: Jonathan Nieder, Jeff King

46bac90 (Do not install shell libraries executable, 2010-01-31) changed
the executable bits of shell variables in order to avoid false reports
from valgrind. As a side effect, this inhibits "git help" from finding
the corresponding man pages because list_command_in_dir() (called by
load_command_list()) checks that bit.

Short of reverting that and appeasing  valgrind in another way, make
list_command_in_dir() ignore the executable bit when looking in the exec
dir, so that the following man pages are found again by "git-help":

git-mergetool--lib
git-parse-remote
git-sh-setup

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
Notes:
    This does not help with the man page for git-remote-helpers which is installed
    but not found by git-help either. That is a different issue, though.

 help.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/help.c b/help.c
index 7f4928e..451899c 100644
--- a/help.c
+++ b/help.c
@@ -146,8 +146,9 @@ static int is_executable(const char *name)
 }
 
 static void list_commands_in_dir(struct cmdnames *cmds,
-					 const char *path,
-					 const char *prefix)
+					const char *path,
+					const char *prefix,
+					int checkexec)
 {
 	int prefix_len;
 	DIR *dir = opendir(path);
@@ -172,7 +173,7 @@ static void list_commands_in_dir(struct cmdnames *cmds,
 
 		strbuf_setlen(&buf, len);
 		strbuf_addstr(&buf, de->d_name);
-		if (!is_executable(buf.buf))
+		if (checkexec && !is_executable(buf.buf))
 			continue;
 
 		entlen = strlen(de->d_name) - prefix_len;
@@ -193,7 +194,7 @@ void load_command_list(const char *prefix,
 	const char *exec_path = git_exec_path();
 
 	if (exec_path) {
-		list_commands_in_dir(main_cmds, exec_path, prefix);
+		list_commands_in_dir(main_cmds, exec_path, prefix, 0);
 		qsort(main_cmds->names, main_cmds->cnt,
 		      sizeof(*main_cmds->names), cmdname_compare);
 		uniq(main_cmds);
@@ -206,7 +207,7 @@ void load_command_list(const char *prefix,
 			if ((colon = strchr(path, PATH_SEP)))
 				*colon = 0;
 			if (!exec_path || strcmp(path, exec_path))
-				list_commands_in_dir(other_cmds, path, prefix);
+				list_commands_in_dir(other_cmds, path, prefix, 1);
 
 			if (!colon)
 				break;
-- 
1.7.2.2.540.g9d56f.dirty

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-01 16:02 [RFC PATCH] git-help: find library man pages again Michael J Gruber
@ 2010-09-01 16:07 ` Michael J Gruber
  2010-09-02  8:16 ` Jonathan Nieder
  1 sibling, 0 replies; 7+ messages in thread
From: Michael J Gruber @ 2010-09-01 16:07 UTC (permalink / raw)
  Cc: git, Jonathan Nieder, Jeff King

Michael J Gruber venit, vidit, dixit 01.09.2010 18:02:
> 46bac90 (Do not install shell libraries executable, 2010-01-31) changed
> the executable bits of shell variables in order to avoid false reports

Umpf, s/variables/libraries/

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-01 16:02 [RFC PATCH] git-help: find library man pages again Michael J Gruber
  2010-09-01 16:07 ` Michael J Gruber
@ 2010-09-02  8:16 ` Jonathan Nieder
  2010-09-02  8:41   ` Michael J Gruber
  1 sibling, 1 reply; 7+ messages in thread
From: Jonathan Nieder @ 2010-09-02  8:16 UTC (permalink / raw)
  To: Michael J Gruber; +Cc: git, Jeff King

Michael J Gruber wrote:

> 46bac90 (Do not install shell libraries executable, 2010-01-31) changed
> the executable bits of shell variables in order to avoid false reports
> from valgrind. As a side effect, this inhibits "git help" from finding
> the corresponding man pages because list_command_in_dir() (called by
> load_command_list()) checks that bit.

Hmm.  Thanks for noticing.

Isn't the main purpose of that check to populate the list of commands
produced by "git help -a"?

> make
> list_command_in_dir() ignore the executable bit when looking in the exec
> dir, so that the following man pages are found again by "git-help":
> 
> git-mergetool--lib
> git-parse-remote
> git-sh-setup
[...]
>     This does not help with the man page for git-remote-helpers which is installed
>     but not found by git-help either. That is a different issue, though.

Therefore this seems wrong to me (except as a backward-compatibility
measure).  i.e. I think that is the same issue after all and that
builtin/help.c ought to learn another heuristic than is_git_command().

How about something like this?

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 Documentation/Makefile                   |   10 +++++-----
 Documentation/diff-options.txt           |    6 +++---
 Documentation/git-add.txt                |    2 +-
 Documentation/git-cat-file.txt           |    2 +-
 Documentation/git-check-ref-format.txt   |    2 +-
 Documentation/git-cherry-pick.txt        |    2 +-
 Documentation/git-cli.txt                |    6 +++---
 Documentation/git-commit.txt             |    4 ++--
 Documentation/git-core-tutorial.txt      |   20 ++++++++++----------
 Documentation/git-cvs-migration.txt      |   22 +++++++++++-----------
 Documentation/git-cvsimport.txt          |    2 +-
 Documentation/git-cvsserver.txt          |    2 +-
 Documentation/git-diff.txt               |    4 ++--
 Documentation/git-diffcore.txt           |    8 ++++----
 Documentation/git-fast-import.txt        |    2 +-
 Documentation/git-format-patch.txt       |    2 +-
 Documentation/git-gc.txt                 |    2 +-
 Documentation/git-glossary.txt           |   12 ++++++------
 Documentation/git-hooks.txt              |    6 +++---
 Documentation/git-log.txt                |    2 +-
 Documentation/git-push.txt               |    2 +-
 Documentation/git-rebase.txt             |    2 +-
 Documentation/git-reflog.txt             |    2 +-
 Documentation/git-repository-layout.txt  |   10 +++++-----
 Documentation/git-rev-parse.txt          |    2 +-
 Documentation/git-revert.txt             |    2 +-
 Documentation/git-revisions.txt          |    6 +++---
 Documentation/git-show-branch.txt        |    2 +-
 Documentation/git-show-ref.txt           |    2 +-
 Documentation/git-show.txt               |    2 +-
 Documentation/git-tutorial-2.txt         |   24 ++++++++++++------------
 Documentation/git-tutorial.txt           |   24 ++++++++++++------------
 Documentation/git-update-server-info.txt |    2 +-
 Documentation/git-workflows.txt          |    8 ++++----
 Documentation/git.txt                    |   28 ++++++++++++++--------------
 Documentation/gitk.txt                   |    2 +-
 Documentation/pt_BR/gittutorial.txt      |   14 +++++++-------
 Documentation/user-manual.txt            |   14 +++++++-------
 Makefile                                 |   22 +++++++++++-----------
 builtin/help.c                           |    4 +---
 40 files changed, 145 insertions(+), 147 deletions(-)

diff --git a/Documentation/Makefile b/Documentation/Makefile
index a4c4063..e0ca3dd 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -2,11 +2,11 @@ MAN1_TXT= \
 	$(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
 		$(wildcard git-*.txt)) \
 	gitk.txt git.txt
-MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \
-	gitrepository-layout.txt
-MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \
-	gitcvs-migration.txt gitcore-tutorial.txt gitglossary.txt \
-	gitdiffcore.txt gitrevisions.txt gitworkflows.txt
+MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt git-hooks.txt \
+	git-repository-layout.txt
+MAN7_TXT=git-cli.txt git-tutorial.txt git-tutorial-2.txt \
+	git-cvs-migration.txt git-core-tutorial.txt git-glossary.txt \
+	git-diffcore.txt git-revisions.txt git-workflows.txt
 
 MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
 MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT))
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 4656a97..c483470 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -168,7 +168,7 @@ A match that contains a newline is silently truncated(!) at the
 newline.
 +
 The regex can also be set via a diff driver or configuration option, see
-linkgit:gitattributes[1] or linkgit:git-config[1].  Giving it explicitly
+linkgit:gitattributes[5] or linkgit:git-config[1].  Giving it explicitly
 overrides any diff driver or configuration setting.  Diff drivers
 override configuration settings.
 
@@ -282,7 +282,7 @@ ifndef::git-format-patch[]
 	Look for differences that introduce or remove an instance of
 	<string>. Note that this is different than the string simply
 	appearing in diff output; see the 'pickaxe' entry in
-	linkgit:gitdiffcore[7] for more details.
+	linkgit:git-diffcore[7] for more details.
 
 --pickaxe-all::
 	When `-S` finds a change, show all the changes in that
@@ -376,4 +376,4 @@ endif::git-format-patch[]
 	Do not show any source or destination prefix.
 
 For more detailed explanation on these common options, see also
-linkgit:gitdiffcore[7].
+linkgit:git-diffcore[7].
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index e22a62f..ebe533a 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -151,7 +151,7 @@ Configuration
 The optional configuration variable `core.excludesfile` indicates a path to a
 file containing patterns of file names to exclude from git-add, similar to
 $GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to
-those in info/exclude.  See linkgit:gitrepository-layout[5].
+those in info/exclude.  See linkgit:git-repository-layout[5].
 
 
 EXAMPLES
diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt
index a3f56b0..561414f 100644
--- a/Documentation/git-cat-file.txt
+++ b/Documentation/git-cat-file.txt
@@ -27,7 +27,7 @@ OPTIONS
 <object>::
 	The name of the object to show.
 	For a more complete list of ways to spell object names, see
-	the "SPECIFYING REVISIONS" section in linkgit:gitrevisions[1].
+	the "SPECIFYING REVISIONS" section in linkgit:git-revisions[7].
 
 -t::
 	Instead of the content, show the object type identified by
diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt
index f5c2e06..a1d2e0f 100644
--- a/Documentation/git-check-ref-format.txt
+++ b/Documentation/git-check-ref-format.txt
@@ -49,7 +49,7 @@ git imposes the following rules on how references are named:
 These rules make it easy for shell script based tools to parse
 reference names, pathname expansion by the shell when a reference name is used
 unquoted (by mistake), and also avoids ambiguities in certain
-reference name expressions (see linkgit:gitrevisions[1]):
+reference name expressions (see linkgit:git-revisions[7]):
 
 . A double-dot `..` is often used as in `ref1..ref2`, and in some
   contexts this notation means `{caret}ref1 ref2` (i.e. not in
diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt
index 2cef579..2167c46 100644
--- a/Documentation/git-cherry-pick.txt
+++ b/Documentation/git-cherry-pick.txt
@@ -21,7 +21,7 @@ OPTIONS
 <commit>...::
 	Commits to cherry-pick.
 	For a more complete list of ways to spell commits, see
-	linkgit:gitrevisions[1].
+	linkgit:git-revisions[7].
 	Sets of commits can be passed but no traversal is done by
 	default, as if the '--no-walk' option was specified, see
 	linkgit:git-rev-list[1].
diff --git a/Documentation/git-cli.txt b/Documentation/git-cli.txt
index 6928724..c490fc6 100644
--- a/Documentation/git-cli.txt
+++ b/Documentation/git-cli.txt
@@ -1,9 +1,9 @@
-gitcli(7)
-=========
+git-cli(7)
+==========
 
 NAME
 ----
-gitcli - git command line interface and conventions
+git-cli - git command line interface and conventions
 
 SYNOPSIS
 --------
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 42fb1f5..ca31b38 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -124,7 +124,7 @@ OPTIONS
 -n::
 --no-verify::
 	This option bypasses the pre-commit and commit-msg hooks.
-	See also linkgit:githooks[5].
+	See also linkgit:git-hooks[5].
 
 --allow-empty::
 	Usually recording a commit that has the exact same tree as its
@@ -371,7 +371,7 @@ order).  See linkgit:git-var[1] for details.
 HOOKS
 -----
 This command can run `commit-msg`, `prepare-commit-msg`, `pre-commit`,
-and `post-commit` hooks.  See linkgit:githooks[5] for more
+and `post-commit` hooks.  See linkgit:git-hooks[5] for more
 information.
 
 
diff --git a/Documentation/git-core-tutorial.txt b/Documentation/git-core-tutorial.txt
index ed3ddc9..0908438 100644
--- a/Documentation/git-core-tutorial.txt
+++ b/Documentation/git-core-tutorial.txt
@@ -1,9 +1,9 @@
-gitcore-tutorial(7)
-===================
+git-core-tutorial(7)
+====================
 
 NAME
 ----
-gitcore-tutorial - A git core tutorial for developers
+git-core-tutorial - A git core tutorial for developers
 
 SYNOPSIS
 --------
@@ -16,7 +16,7 @@ This tutorial explains how to use the "core" git commands to set up and
 work with a git repository.
 
 If you just need to use git as a revision control system you may prefer
-to start with "A Tutorial Introduction to GIT" (linkgit:gittutorial[7]) or
+to start with "A Tutorial Introduction to GIT" (linkgit:git-tutorial[7]) or
 link:user-manual.html[the GIT User Manual].
 
 However, an understanding of these low-level tools can be helpful if
@@ -116,7 +116,7 @@ references in these `refs` subdirectories when you actually start
 populating your tree.
 
 [NOTE]
-An advanced user may want to take a look at linkgit:gitrepository-layout[5]
+An advanced user may want to take a look at linkgit:git-repository-layout[5]
 after finishing this tutorial.
 
 You have now created your first git repository. Of course, since it's
@@ -971,7 +971,7 @@ commits from the master branch.  The string inside brackets
 before the commit log message is a short name you can use to
 name the commit.  In the above example, 'master' and 'mybranch'
 are branch heads.  'master^' is the first parent of 'master'
-branch head.  Please see linkgit:gitrevisions[1] if you want to
+branch head.  Please see linkgit:git-revisions[7] if you want to
 see more complex cases.
 
 [NOTE]
@@ -1596,7 +1596,7 @@ suggested in the previous section may be new to you. You do not
 have to worry. git supports "shared public repository" style of
 cooperation you are probably more familiar with as well.
 
-See linkgit:gitcvs-migration[7] for the details.
+See linkgit:git-cvs-migration[7] for the details.
 
 Bundling your work together
 ---------------------------
@@ -1697,9 +1697,9 @@ to follow, not easier.
 
 SEE ALSO
 --------
-linkgit:gittutorial[7],
-linkgit:gittutorial-2[7],
-linkgit:gitcvs-migration[7],
+linkgit:git-tutorial[7],
+linkgit:git-tutorial-2[7],
+linkgit:git-cvs-migration[7],
 linkgit:git-help[1],
 link:everyday.html[Everyday git],
 link:user-manual.html[The Git User's Manual]
diff --git a/Documentation/git-cvs-migration.txt b/Documentation/git-cvs-migration.txt
index d861ec4..1568771 100644
--- a/Documentation/git-cvs-migration.txt
+++ b/Documentation/git-cvs-migration.txt
@@ -1,9 +1,9 @@
-gitcvs-migration(7)
-===================
+git-cvs-migration(7)
+====================
 
 NAME
 ----
-gitcvs-migration - git for CVS users
+git-cvs-migration - git for CVS users
 
 SYNOPSIS
 --------
@@ -19,8 +19,8 @@ designating a single shared repository which people can synchronize with;
 this document explains how to do that.
 
 Some basic familiarity with git is required. Having gone through
-linkgit:gittutorial[7] and
-linkgit:gitglossary[7] should be sufficient.
+linkgit:git-tutorial[7] and
+linkgit:git-glossary[7] should be sufficient.
 
 Developing against a shared repository
 --------------------------------------
@@ -82,7 +82,7 @@ Setting Up a Shared Repository
 
 We assume you have already created a git repository for your project,
 possibly created from scratch or from a tarball (see
-linkgit:gittutorial[7]), or imported from an already existing CVS
+linkgit:git-tutorial[7]), or imported from an already existing CVS
 repository (see the next section).
 
 Assume your existing repo is at /home/alice/myproject.  Create a new "bare"
@@ -153,7 +153,7 @@ Advanced Shared Repository Management
 
 Git allows you to specify scripts called "hooks" to be run at certain
 points.  You can use these, for example, to send all commits to the shared
-repository to a mailing list.  See linkgit:githooks[5].
+repository to a mailing list.  See linkgit:git-hooks[5].
 
 You can enforce finer grained permissions using update hooks.  See
 link:howto/update-hook-example.txt[Controlling access to branches using
@@ -189,10 +189,10 @@ repositories without the need for a central maintainer.
 
 SEE ALSO
 --------
-linkgit:gittutorial[7],
-linkgit:gittutorial-2[7],
-linkgit:gitcore-tutorial[7],
-linkgit:gitglossary[7],
+linkgit:git-tutorial[7],
+linkgit:git-tutorial-2[7],
+linkgit:git-core-tutorial[7],
+linkgit:git-glossary[7],
 link:everyday.html[Everyday Git],
 link:user-manual.html[The Git User's Manual]
 
diff --git a/Documentation/git-cvsimport.txt b/Documentation/git-cvsimport.txt
index 608cd63..20feadc 100644
--- a/Documentation/git-cvsimport.txt
+++ b/Documentation/git-cvsimport.txt
@@ -38,7 +38,7 @@ If you intend to set up a shared public repository that all developers can
 read/write, or if you want to use linkgit:git-cvsserver[1], then you
 probably want to make a bare clone of the imported repository,
 and use the clone as the shared repository.
-See linkgit:gitcvs-migration[7].
+See linkgit:git-cvs-migration[7].
 
 
 OPTIONS
diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index f4472c6..ccc9e1e 100644
--- a/Documentation/git-cvsserver.txt
+++ b/Documentation/git-cvsserver.txt
@@ -163,7 +163,7 @@ write access to the log file and to the database (see
 SSH, the users of course also need write access to the git repository itself.
 
 You also need to ensure that each repository is "bare" (without a git index
-file) for `cvs commit` to work. See linkgit:gitcvs-migration[7].
+file) for `cvs commit` to work. See linkgit:git-cvs-migration[7].
 
 [[configaccessmethod]]
 All configuration variables can also be overridden for a specific method of
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index 08fd409..23e2afc 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -68,11 +68,11 @@ for the last two forms that use ".." notations, can be any
 <tree-ish>.
 
 For a more complete list of ways to spell <commit>, see
-"SPECIFYING REVISIONS" section in linkgit:gitrevisions[1].
+"SPECIFYING REVISIONS" section in linkgit:git-revisions[7].
 However, "diff" is about comparing two _endpoints_, not ranges,
 and the range notations ("<commit>..<commit>" and
 "<commit>\...<commit>") do not mean a range as defined in the
-"SPECIFYING RANGES" section in linkgit:gitrevisions[1].
+"SPECIFYING RANGES" section in linkgit:git-revisions[7].
 
 OPTIONS
 -------
diff --git a/Documentation/git-diffcore.txt b/Documentation/git-diffcore.txt
index 5d91a7e..73c9d6b 100644
--- a/Documentation/git-diffcore.txt
+++ b/Documentation/git-diffcore.txt
@@ -1,9 +1,9 @@
-gitdiffcore(7)
-==============
+git-diffcore(7)
+===============
 
 NAME
 ----
-gitdiffcore - Tweaking diff output
+git-diffcore - Tweaking diff output
 
 SYNOPSIS
 --------
@@ -273,7 +273,7 @@ linkgit:git-diff-index[1],
 linkgit:git-diff-tree[1],
 linkgit:git-format-patch[1],
 linkgit:git-log[1],
-linkgit:gitglossary[7],
+linkgit:git-glossary[7],
 link:user-manual.html[The Git User's Manual]
 
 GIT
diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt
index 966ba4f..9229991 100644
--- a/Documentation/git-fast-import.txt
+++ b/Documentation/git-fast-import.txt
@@ -439,7 +439,7 @@ Marks must be declared (via `mark`) before they can be used.
 * A complete 40 byte or abbreviated commit SHA-1 in hex.
 
 * Any valid Git SHA-1 expression that resolves to a commit.  See
-  ``SPECIFYING REVISIONS'' in linkgit:gitrevisions[1] for details.
+  ``SPECIFYING REVISIONS'' in linkgit:git-revisions[7] for details.
 
 The special case of restarting an incremental import from the
 current branch value should be written as:
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 4b3f5ba..c5711b1 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -39,7 +39,7 @@ There are two ways to specify which commits to operate on.
    that leads to the <since> to be output.
 
 2. Generic <revision range> expression (see "SPECIFYING
-   REVISIONS" section in linkgit:gitrevisions[1]) means the
+   REVISIONS" section in linkgit:git-revisions[7]) means the
    commits in the specified range.
 
 The first rule takes precedence in the case of a single <commit>.  To
diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt
index 315f07e..f8cc38f 100644
--- a/Documentation/git-gc.txt
+++ b/Documentation/git-gc.txt
@@ -141,7 +141,7 @@ HOOKS
 -----
 
 The 'git gc --auto' command will run the 'pre-auto-gc' hook.  See
-linkgit:githooks[5] for more information.
+linkgit:git-hooks[5] for more information.
 
 
 SEE ALSO
diff --git a/Documentation/git-glossary.txt b/Documentation/git-glossary.txt
index d77a45a..c8157fe 100644
--- a/Documentation/git-glossary.txt
+++ b/Documentation/git-glossary.txt
@@ -1,9 +1,9 @@
-gitglossary(7)
-==============
+git-glossary(7)
+===============
 
 NAME
 ----
-gitglossary - A GIT Glossary
+git-glossary - A GIT Glossary
 
 SYNOPSIS
 --------
@@ -16,9 +16,9 @@ include::glossary-content.txt[]
 
 SEE ALSO
 --------
-linkgit:gittutorial[7],
-linkgit:gittutorial-2[7],
-linkgit:gitcvs-migration[7],
+linkgit:git-tutorial[7],
+linkgit:git-tutorial-2[7],
+linkgit:git-cvs-migration[7],
 link:everyday.html[Everyday git],
 link:user-manual.html[The Git User's Manual]
 
diff --git a/Documentation/git-hooks.txt b/Documentation/git-hooks.txt
index 7183aa9..4eb0bac 100644
--- a/Documentation/git-hooks.txt
+++ b/Documentation/git-hooks.txt
@@ -1,9 +1,9 @@
-githooks(5)
-===========
+git-hooks(5)
+============
 
 NAME
 ----
-githooks - Hooks used by git
+git-hooks - Hooks used by git
 
 SYNOPSIS
 --------
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index c213bdb..16d60ce 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -31,7 +31,7 @@ OPTIONS
 	either <since> or <until> is omitted, it defaults to
 	`HEAD`, i.e. the tip of the current branch.
 	For a more complete list of ways to spell <since>
-	and <until>, see linkgit:gitrevisions[1].
+	and <until>, see linkgit:git-revisions[7].
 
 --follow::
 	Continue listing the history of a file beyond renames
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index 658ff2f..06c28cc 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -41,7 +41,7 @@ OPTIONS[[OPTIONS]]
 +
 The <src> is often the name of the branch you would want to push, but
 it can be any arbitrary "SHA-1 expression", such as `master~4` or
-`HEAD` (see linkgit:gitrevisions[1]).
+`HEAD` (see linkgit:git-revisions[7]).
 +
 The <dst> tells which ref on the remote side is updated with this
 push. Arbitrary expressions cannot be used here, an actual ref must
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 3b87f1a..d2b12ed 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -274,7 +274,7 @@ which makes little sense.
 	Do not show a diffstat as part of the rebase process.
 
 --no-verify::
-	This option bypasses the pre-rebase hook.  See also linkgit:githooks[5].
+	This option bypasses the pre-rebase hook.  See also linkgit:git-hooks[5].
 
 -C<n>::
 	Ensure at least <n> lines of surrounding context match before
diff --git a/Documentation/git-reflog.txt b/Documentation/git-reflog.txt
index 5a0451a..7429f16 100644
--- a/Documentation/git-reflog.txt
+++ b/Documentation/git-reflog.txt
@@ -40,7 +40,7 @@ see linkgit:git-log[1].
 The reflog is useful in various git commands, to specify the old value
 of a reference. For example, `HEAD@\{2\}` means "where HEAD used to be
 two moves ago", `master@\{one.week.ago\}` means "where master used to
-point to one week ago", and so on. See linkgit:gitrevisions[1] for
+point to one week ago", and so on. See linkgit:git-revisions[7] for
 more details.
 
 To delete single entries from the reflog, use the subcommand "delete"
diff --git a/Documentation/git-repository-layout.txt b/Documentation/git-repository-layout.txt
index eb3d040..c9950a2 100644
--- a/Documentation/git-repository-layout.txt
+++ b/Documentation/git-repository-layout.txt
@@ -1,9 +1,9 @@
-gitrepository-layout(5)
-=======================
+git-repository-layout(5)
+========================
 
 NAME
 ----
-gitrepository-layout - Git Repository Layout
+git-repository-layout - Git Repository Layout
 
 SYNOPSIS
 --------
@@ -136,7 +136,7 @@ hooks::
 	'git init' is run, but all of them are disabled by
 	default.  To enable, the `.sample` suffix has to be
 	removed from the filename by renaming.
-	Read linkgit:githooks[5] for more details about
+	Read linkgit:git-hooks[5] for more details about
 	each hook.
 
 index::
@@ -201,7 +201,7 @@ linkgit:git-fetch[1],
 linkgit:git-pack-refs[1],
 linkgit:git-gc[1],
 linkgit:git-checkout[1],
-linkgit:gitglossary[7],
+linkgit:git-glossary[7],
 link:user-manual.html[The Git User's Manual]
 
 GIT
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index be4c053..2c62e05 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -219,7 +219,7 @@ Each line of options has this format:
 
 	* Use `*` to mean that this option should not be listed in the usage
 	  generated for the `-h` argument. It's shown for `--help-all` as
-	  documented in linkgit:gitcli[7].
+	  documented in linkgit:git-cli[7].
 
 	* Use `!` to not make the corresponding negated long option available.
 
diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt
index b7d9ef7..a4dcd2d 100644
--- a/Documentation/git-revert.txt
+++ b/Documentation/git-revert.txt
@@ -31,7 +31,7 @@ OPTIONS
 <commit>...::
 	Commits to revert.
 	For a more complete list of ways to spell commit names, see
-	linkgit:gitrevisions[1].
+	linkgit:git-revisions[7].
 	Sets of commits can also be given but no traversal is done by
 	default, see linkgit:git-rev-list[1] and its '--no-walk'
 	option.
diff --git a/Documentation/git-revisions.txt b/Documentation/git-revisions.txt
index fc4789f..cb481dd 100644
--- a/Documentation/git-revisions.txt
+++ b/Documentation/git-revisions.txt
@@ -1,13 +1,13 @@
-gitrevisions(7)
+git-revisions(7)
 ================
 
 NAME
 ----
-gitrevisions - specifying revisions and ranges for git
+git-revisions - specifying revisions and ranges for git
 
 SYNOPSIS
 --------
-gitrevisions
+<commit>, ^<commit>, <commit>^n, :<path>, <stage>:<path>, <commit>:<path>
 
 
 DESCRIPTION
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index 81ba296..115d8b6 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -32,7 +32,7 @@ no <rev> nor <glob> is given on the command line.
 OPTIONS
 -------
 <rev>::
-	Arbitrary extended SHA1 expression (see linkgit:gitrevisions[1])
+	Arbitrary extended SHA1 expression (see linkgit:git-revisions[7])
 	that typically names a branch head or a tag.
 
 <glob>::
diff --git a/Documentation/git-show-ref.txt b/Documentation/git-show-ref.txt
index 75780d7..f191b96 100644
--- a/Documentation/git-show-ref.txt
+++ b/Documentation/git-show-ref.txt
@@ -171,7 +171,7 @@ SEE ALSO
 --------
 linkgit:git-ls-remote[1],
 linkgit:git-update-ref[1],
-linkgit:gitrepository-layout[5]
+linkgit:git-repository-layout[5]
 
 AUTHORS
 -------
diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt
index 0002bfb..00d1a9a 100644
--- a/Documentation/git-show.txt
+++ b/Documentation/git-show.txt
@@ -36,7 +36,7 @@ OPTIONS
 <object>...::
 	The names of objects to show.
 	For a more complete list of ways to spell object names, see
-	"SPECIFYING REVISIONS" section in linkgit:gitrevisions[1].
+	"SPECIFYING REVISIONS" section in linkgit:git-revisions[7].
 
 include::pretty-options.txt[]
 
diff --git a/Documentation/git-tutorial-2.txt b/Documentation/git-tutorial-2.txt
index ecab0c0..fe0bd51 100644
--- a/Documentation/git-tutorial-2.txt
+++ b/Documentation/git-tutorial-2.txt
@@ -1,9 +1,9 @@
-gittutorial-2(7)
-================
+git-tutorial-2(7)
+=================
 
 NAME
 ----
-gittutorial-2 - A tutorial introduction to git: part two
+git-tutorial-2 - A tutorial introduction to git: part two
 
 SYNOPSIS
 --------
@@ -12,7 +12,7 @@ git *
 DESCRIPTION
 -----------
 
-You should work through linkgit:gittutorial[7] before reading this tutorial.
+You should work through linkgit:git-tutorial[7] before reading this tutorial.
 
 The goal of this tutorial is to introduce two fundamental pieces of
 git's architecture--the object database and the index file--and to
@@ -394,7 +394,7 @@ in the index file is identical to the one in the working directory.
 In addition to being the staging area for new commits, the index file
 is also populated from the object database when checking out a
 branch, and is used to hold the trees involved in a merge operation.
-See linkgit:gitcore-tutorial[7] and the relevant man
+See linkgit:git-core-tutorial[7] and the relevant man
 pages for details.
 
 What next?
@@ -403,28 +403,28 @@ What next?
 At this point you should know everything necessary to read the man
 pages for any of the git commands; one good place to start would be
 with the commands mentioned in link:everyday.html[Everyday git].  You
-should be able to find any unknown jargon in linkgit:gitglossary[7].
+should be able to find any unknown jargon in linkgit:git-glossary[7].
 
 The link:user-manual.html[Git User's Manual] provides a more
 comprehensive introduction to git.
 
-linkgit:gitcvs-migration[7] explains how to
+linkgit:git-cvs-migration[7] explains how to
 import a CVS repository into git, and shows how to use git in a
 CVS-like way.
 
 For some interesting examples of git use, see the
 link:howto-index.html[howtos].
 
-For git developers, linkgit:gitcore-tutorial[7] goes
+For git developers, linkgit:git-core-tutorial[7] goes
 into detail on the lower-level git mechanisms involved in, for
 example, creating a new commit.
 
 SEE ALSO
 --------
-linkgit:gittutorial[7],
-linkgit:gitcvs-migration[7],
-linkgit:gitcore-tutorial[7],
-linkgit:gitglossary[7],
+linkgit:git-tutorial[7],
+linkgit:git-cvs-migration[7],
+linkgit:git-core-tutorial[7],
+linkgit:git-glossary[7],
 linkgit:git-help[1],
 link:everyday.html[Everyday git],
 link:user-manual.html[The Git User's Manual]
diff --git a/Documentation/git-tutorial.txt b/Documentation/git-tutorial.txt
index 1c16066..beedba6 100644
--- a/Documentation/git-tutorial.txt
+++ b/Documentation/git-tutorial.txt
@@ -1,9 +1,9 @@
-gittutorial(7)
-==============
+git-tutorial(7)
+===============
 
 NAME
 ----
-gittutorial - A tutorial introduction to git (for version 1.5.1 or newer)
+git-tutorial - A tutorial introduction to git (for version 1.5.1 or newer)
 
 SYNOPSIS
 --------
@@ -452,7 +452,7 @@ see linkgit:git-pull[1] for details.
 
 Git can also be used in a CVS-like mode, with a central repository
 that various users push changes to; see linkgit:git-push[1] and
-linkgit:gitcvs-migration[7].
+linkgit:git-cvs-migration[7].
 
 Exploring history
 -----------------
@@ -633,7 +633,7 @@ is based:
 
 Part two of this tutorial explains the object
 database, the index file, and a few other odds and ends that you'll
-need to make the most of git. You can find it at linkgit:gittutorial-2[7].
+need to make the most of git. You can find it at linkgit:git-tutorial-2[7].
 
 If you don't want to continue with that right away, a few other
 digressions that may be interesting at this point are:
@@ -650,21 +650,21 @@ digressions that may be interesting at this point are:
     smart enough to perform a close-to-optimal search even in the
     case of complex non-linear history with lots of merged branches.
 
-  * linkgit:gitworkflows[7]: Gives an overview of recommended
+  * linkgit:git-workflows[7]: Gives an overview of recommended
     workflows.
 
   * link:everyday.html[Everyday GIT with 20 Commands Or So]
 
-  * linkgit:gitcvs-migration[7]: Git for CVS users.
+  * linkgit:git-cvs-migration[7]: Git for CVS users.
 
 SEE ALSO
 --------
-linkgit:gittutorial-2[7],
-linkgit:gitcvs-migration[7],
-linkgit:gitcore-tutorial[7],
-linkgit:gitglossary[7],
+linkgit:git-tutorial-2[7],
+linkgit:git-cvs-migration[7],
+linkgit:git-core-tutorial[7],
+linkgit:git-glossary[7],
 linkgit:git-help[1],
-linkgit:gitworkflows[7],
+linkgit:git-workflows[7],
 link:everyday.html[Everyday git],
 link:user-manual.html[The Git User's Manual]
 
diff --git a/Documentation/git-update-server-info.txt b/Documentation/git-update-server-info.txt
index 035cc30..6f1c56f 100644
--- a/Documentation/git-update-server-info.txt
+++ b/Documentation/git-update-server-info.txt
@@ -31,7 +31,7 @@ OUTPUT
 ------
 
 Currently the command updates the following files.  Please see
-linkgit:gitrepository-layout[5] for description of
+linkgit:git-repository-layout[5] for description of
 what they are for:
 
 * objects/info/packs
diff --git a/Documentation/git-workflows.txt b/Documentation/git-workflows.txt
index 1ef55ff..01febd4 100644
--- a/Documentation/git-workflows.txt
+++ b/Documentation/git-workflows.txt
@@ -1,9 +1,9 @@
-gitworkflows(7)
-===============
+git-workflows(7)
+================
 
 NAME
 ----
-gitworkflows - An overview of recommended workflows with git
+git-workflows - An overview of recommended workflows with git
 
 SYNOPSIS
 --------
@@ -465,7 +465,7 @@ other options.
 
 SEE ALSO
 --------
-linkgit:gittutorial[7],
+linkgit:git-tutorial[7],
 linkgit:git-push[1],
 linkgit:git-pull[1],
 linkgit:git-merge[1],
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 5317893..4fa2b70 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -21,10 +21,10 @@ Git is a fast, scalable, distributed revision control system with an
 unusually rich command set that provides both high-level operations
 and full access to internals.
 
-See linkgit:gittutorial[7] to get started, then see
+See linkgit:git-tutorial[7] to get started, then see
 link:everyday.html[Everyday Git] for a useful minimum set of commands, and
 "man git-commandname" for documentation of each command.  CVS users may
-also want to read linkgit:gitcvs-migration[7].  See
+also want to read linkgit:git-cvs-migration[7].  See
 the link:user-manual.html[Git User's Manual] for a more in-depth
 introduction.
 
@@ -300,10 +300,10 @@ See the references above to get started using git.  The following is
 probably more detail than necessary for a first-time user.
 
 The link:user-manual.html#git-concepts[git concepts chapter of the
-user-manual] and linkgit:gitcore-tutorial[7] both provide
+user-manual] and linkgit:git-core-tutorial[7] both provide
 introductions to the underlying git architecture.
 
-See linkgit:gitworkflows[7] for an overview of recommended workflows.
+See linkgit:git-workflows[7] for an overview of recommended workflows.
 
 See also the link:howto-index.html[howto] documents for some useful
 examples.
@@ -488,15 +488,15 @@ HEAD::
 	(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
 
 For a more complete list of ways to spell object names, see
-"SPECIFYING REVISIONS" section in linkgit:gitrevisions[1].
+"SPECIFYING REVISIONS" section in linkgit:git-revisions[7].
 
 
 File/Directory Structure
 ------------------------
 
-Please see the linkgit:gitrepository-layout[5] document.
+Please see the linkgit:git-repository-layout[5] document.
 
-Read linkgit:githooks[5] for more details about each hook.
+Read linkgit:git-hooks[5] for more details about each hook.
 
 Higher level SCMs may provide and manage additional information in the
 `$GIT_DIR`.
@@ -504,7 +504,7 @@ Higher level SCMs may provide and manage additional information in the
 
 Terminology
 -----------
-Please see linkgit:gitglossary[7].
+Please see linkgit:git-glossary[7].
 
 
 Environment Variables
@@ -667,7 +667,7 @@ Discussion[[Discussion]]
 
 More detail on the following is available from the
 link:user-manual.html#git-concepts[git concepts chapter of the
-user-manual] and linkgit:gitcore-tutorial[7].
+user-manual] and linkgit:git-core-tutorial[7].
 
 A git project normally consists of a working directory with a ".git"
 subdirectory at the top level.  The .git directory contains, among other
@@ -737,11 +737,11 @@ subscribed to the list to send a message there.
 
 SEE ALSO
 --------
-linkgit:gittutorial[7], linkgit:gittutorial-2[7],
-link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
-linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
-linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
-linkgit:gitworkflows[7]
+linkgit:git-tutorial[7], linkgit:git-tutorial-2[7],
+link:everyday.html[Everyday Git], linkgit:git-cvs-migration[7],
+linkgit:git-glossary[7], linkgit:git-core-tutorial[7],
+linkgit:git-cli[7], link:user-manual.html[The Git User's Manual],
+linkgit:git-workflows[7]
 
 GIT
 ---
diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 05ac1c7..fde793a 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -69,7 +69,7 @@ frequently used options.
 	the form "'<from>'..'<to>'" to show all revisions between '<from>' and
 	back to '<to>'. Note, more advanced revision selection can be applied.
 	For a more complete list of ways to spell object names, see
-	linkgit:gitrevisions[1].
+	linkgit:git-revisions[7].
 
 <path>...::
 
diff --git a/Documentation/pt_BR/gittutorial.txt b/Documentation/pt_BR/gittutorial.txt
index beba065..5ae4b2a 100644
--- a/Documentation/pt_BR/gittutorial.txt
+++ b/Documentation/pt_BR/gittutorial.txt
@@ -457,7 +457,7 @@ http; veja linkgit:git-pull[1] para detalhes.
 
 Git pode também ser usado em um modo parecido com CVS, com um
 repositório central para o qual vários usuários empurram modificações;
-veja linkgit:git-push[1] e linkgit:gitcvs-migration[7].
+veja linkgit:git-push[1] e linkgit:git-cvs-migration[7].
 
 Explorando história
 -----------------
@@ -639,7 +639,7 @@ idéias simples nas quais ele se baseia:
 
 A parte dois deste tutorial explica a base de objetos, o arquivo de
 índice, e algumas outras coisinhas que você vai precisar pra usar o
-máximo do git. Você pode encontrá-la em linkgit:gittutorial-2[7].
+máximo do git. Você pode encontrá-la em linkgit:git-tutorial-2[7].
 
 Se você não quiser continuar com o tutorial agora nesse momento, algumas
 outras digressões que podem ser interessantes neste ponto são:
@@ -658,14 +658,14 @@ outras digressões que podem ser interessantes neste ponto são:
 
   * link:everyday.html[GIT diariamente com 20 e tantos comandos]
 
-  * linkgit:gitcvs-migration[7]: Git para usuários de CVS.
+  * linkgit:git-cvs-migration[7]: Git para usuários de CVS.
 
 VEJA TAMBÉM
 --------
-linkgit:gittutorial-2[7],
-linkgit:gitcvs-migration[7],
-linkgit:gitcore-tutorial[7],
-linkgit:gitglossary[7],
+linkgit:git-tutorial-2[7],
+linkgit:git-cvs-migration[7],
+linkgit:git-core-tutorial[7],
+linkgit:git-glossary[7],
 linkgit:git-help[1],
 link:everyday.html[git diariamente],
 link:user-manual.html[O Manual do Usuário git]
diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt
index 22aee34..54f02e7 100644
--- a/Documentation/user-manual.txt
+++ b/Documentation/user-manual.txt
@@ -397,7 +397,7 @@ is usually a shortcut for the HEAD branch in the repository "origin".
 For the complete list of paths which git checks for references, and
 the order it uses to decide which to choose when there are multiple
 references with the same shorthand name, see the "SPECIFYING
-REVISIONS" section of linkgit:gitrevisions[1].
+REVISIONS" section of linkgit:git-revisions[1].
 
 [[Updating-a-repository-With-git-fetch]]
 Updating a repository with git fetch
@@ -568,7 +568,7 @@ We have seen several ways of naming commits already:
 	- HEAD: refers to the head of the current branch
 
 There are many more; see the "SPECIFYING REVISIONS" section of the
-linkgit:gitrevisions[1] man page for the complete list of ways to
+linkgit:git-revisions[7] man page for the complete list of ways to
 name revisions.  Some examples:
 
 -------------------------------------------------
@@ -909,7 +909,7 @@ commits reachable from some head but not from any tag in the repository:
 $ gitk $( git show-ref --heads ) --not  $( git show-ref --tags )
 -------------------------------------------------
 
-(See linkgit:gitrevisions[1] for explanations of commit-selecting
+(See linkgit:git-revisions[7] for explanations of commit-selecting
 syntax such as `--not`.)
 
 [[making-a-release]]
@@ -1635,7 +1635,7 @@ you've checked out.
 The reflogs are kept by default for 30 days, after which they may be
 pruned.  See linkgit:git-reflog[1] and linkgit:git-gc[1] to learn
 how to control this pruning, and see the "SPECIFYING REVISIONS"
-section of linkgit:gitrevisions[1] for details.
+section of linkgit:git-revisions[7] for details.
 
 Note that the reflog history is very different from normal git history.
 While normal history is shared by every repository that works on the
@@ -1920,7 +1920,7 @@ $ mv hooks/post-update.sample hooks/post-update
 -------------------------------------------------
 
 (For an explanation of the last two lines, see
-linkgit:git-update-server-info[1] and linkgit:githooks[5].)
+linkgit:git-update-server-info[1] and linkgit:git-hooks[5].)
 
 Advertise the URL of proj.git.  Anybody else should then be able to
 clone or pull from that URL, for example with a command line like:
@@ -2032,7 +2032,7 @@ the right to push to the same repository.  In that case, the correct
 solution is to retry the push after first updating your work: either by a
 pull, or by a fetch followed by a rebase; see the
 <<setting-up-a-shared-repository,next section>> and
-linkgit:gitcvs-migration[7] for more.
+linkgit:git-cvs-migration[7] for more.
 
 [[setting-up-a-shared-repository]]
 Setting up a shared repository
@@ -2041,7 +2041,7 @@ Setting up a shared repository
 Another way to collaborate is by using a model similar to that
 commonly used in CVS, where several developers with special rights
 all push to and pull from a single shared repository.  See
-linkgit:gitcvs-migration[7] for instructions on how to
+linkgit:git-cvs-migration[7] for instructions on how to
 set this up.
 
 However, while there is nothing wrong with git's support for shared
diff --git a/Makefile b/Makefile
index b4745a5..f3c369f 100644
--- a/Makefile
+++ b/Makefile
@@ -2256,20 +2256,20 @@ check-docs::
 		documented,gitattributes | \
 		documented,gitignore | \
 		documented,gitmodules | \
-		documented,gitcli | \
+		documented,git-cli | \
 		documented,git-tools | \
-		documented,gitcore-tutorial | \
-		documented,gitcvs-migration | \
-		documented,gitdiffcore | \
-		documented,gitglossary | \
-		documented,githooks | \
-		documented,gitrepository-layout | \
-		documented,gitrevisions | \
-		documented,gittutorial | \
-		documented,gittutorial-2 | \
+		documented,git-core-tutorial | \
+		documented,git-cvs-migration | \
+		documented,git-diffcore | \
+		documented,git-glossary | \
+		documented,git-hooks | \
+		documented,git-repository-layout | \
+		documented,git-revisions | \
+		documented,git-tutorial | \
+		documented,git-tutorial-2 | \
 		documented,git-bisect-lk2009 | \
 		documented,git-remote-helpers | \
-		documented,gitworkflows | \
+		documented,git-workflows | \
 		sentinel,not,matching,is,ok ) continue ;; \
 		esac; \
 		case " $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git gitk " in \
diff --git a/builtin/help.c b/builtin/help.c
index 61ff798..d1f6736 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -310,10 +310,8 @@ static const char *cmd_to_page(const char *git_cmd)
 		return "git";
 	else if (!prefixcmp(git_cmd, "git"))
 		return git_cmd;
-	else if (is_git_command(git_cmd))
-		return prepend("git-", git_cmd);
 	else
-		return prepend("git", git_cmd);
+		return prepend("git-", git_cmd);
 }
 
 static void setup_man_path(void)
-- 

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-02  8:16 ` Jonathan Nieder
@ 2010-09-02  8:41   ` Michael J Gruber
  2010-09-02  8:55     ` Jonathan Nieder
  2010-09-09 19:58     ` Jeff King
  0 siblings, 2 replies; 7+ messages in thread
From: Michael J Gruber @ 2010-09-02  8:41 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: git, Jeff King

Jonathan Nieder venit, vidit, dixit 02.09.2010 10:16:
> Michael J Gruber wrote:
> 
>> 46bac90 (Do not install shell libraries executable, 2010-01-31) changed
>> the executable bits of shell variables in order to avoid false reports
>> from valgrind. As a side effect, this inhibits "git help" from finding
>> the corresponding man pages because list_command_in_dir() (called by
>> load_command_list()) checks that bit.
> 
> Hmm.  Thanks for noticing.
> 
> Isn't the main purpose of that check to populate the list of commands
> produced by "git help -a"?
> 
>> make
>> list_command_in_dir() ignore the executable bit when looking in the exec
>> dir, so that the following man pages are found again by "git-help":
>>
>> git-mergetool--lib
>> git-parse-remote
>> git-sh-setup
> [...]
>>     This does not help with the man page for git-remote-helpers which is installed
>>     but not found by git-help either. That is a different issue, though.
> 
> Therefore this seems wrong to me (except as a backward-compatibility
> measure).

[I don't seem to be very lucky with my patches lately; but that seems to
come from the common strive for the best solution, which is good, of
course :| ]

>  i.e. I think that is the same issue after all and that
> builtin/help.c ought to learn another heuristic than is_git_command().

One heuristic, which I would have left for a later patch because of its
radicality (and I think we're in some phase of some rc something), is to
simply not do any checks when calling the viewers. This requires that
everything is prepended with "git-", which I see you have done in
builtin/help.c. Still, none-command help pages will not show up with
"git help -a". So it's not a complete solution.

Alternatively, load_command_list() etc. could simply fill up a third
list "other_pages" (with non-executables) so that "git help -a" could
list "other help pages" in addition to the commands. I don't think this
would require any renaming nor Documentation updates.

> How about something like this?
> 
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
>  Documentation/Makefile                   |   10 +++++-----
>  Documentation/diff-options.txt           |    6 +++---
>  Documentation/git-add.txt                |    2 +-
>  Documentation/git-cat-file.txt           |    2 +-
>  Documentation/git-check-ref-format.txt   |    2 +-
>  Documentation/git-cherry-pick.txt        |    2 +-
>  Documentation/git-cli.txt                |    6 +++---

??? I guess this patch makes sense only after a patch which renames all
gitfoo.txt to git-foo.txt.

>  Documentation/git-commit.txt             |    4 ++--
>  Documentation/git-core-tutorial.txt      |   20 ++++++++++----------
>  Documentation/git-cvs-migration.txt      |   22 +++++++++++-----------
>  Documentation/git-cvsimport.txt          |    2 +-
>  Documentation/git-cvsserver.txt          |    2 +-
>  Documentation/git-diff.txt               |    4 ++--
>  Documentation/git-diffcore.txt           |    8 ++++----
>  Documentation/git-fast-import.txt        |    2 +-
>  Documentation/git-format-patch.txt       |    2 +-
>  Documentation/git-gc.txt                 |    2 +-
>  Documentation/git-glossary.txt           |   12 ++++++------
>  Documentation/git-hooks.txt              |    6 +++---
>  Documentation/git-log.txt                |    2 +-
>  Documentation/git-push.txt               |    2 +-
>  Documentation/git-rebase.txt             |    2 +-
>  Documentation/git-reflog.txt             |    2 +-
>  Documentation/git-repository-layout.txt  |   10 +++++-----
>  Documentation/git-rev-parse.txt          |    2 +-
>  Documentation/git-revert.txt             |    2 +-
>  Documentation/git-revisions.txt          |    6 +++---
>  Documentation/git-show-branch.txt        |    2 +-
>  Documentation/git-show-ref.txt           |    2 +-
>  Documentation/git-show.txt               |    2 +-
>  Documentation/git-tutorial-2.txt         |   24 ++++++++++++------------
>  Documentation/git-tutorial.txt           |   24 ++++++++++++------------
>  Documentation/git-update-server-info.txt |    2 +-
>  Documentation/git-workflows.txt          |    8 ++++----
>  Documentation/git.txt                    |   28 ++++++++++++++--------------
>  Documentation/gitk.txt                   |    2 +-
>  Documentation/pt_BR/gittutorial.txt      |   14 +++++++-------
>  Documentation/user-manual.txt            |   14 +++++++-------
>  Makefile                                 |   22 +++++++++++-----------
>  builtin/help.c                           |    4 +---
>  40 files changed, 145 insertions(+), 147 deletions(-)
> 

[trivial gitfoo -> git-foo diffs skipped]

> diff --git a/Makefile b/Makefile
> index b4745a5..f3c369f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2256,20 +2256,20 @@ check-docs::
>  		documented,gitattributes | \
>  		documented,gitignore | \
>  		documented,gitmodules | \
> -		documented,gitcli | \
> +		documented,git-cli | \
>  		documented,git-tools | \
> -		documented,gitcore-tutorial | \
> -		documented,gitcvs-migration | \
> -		documented,gitdiffcore | \
> -		documented,gitglossary | \
> -		documented,githooks | \
> -		documented,gitrepository-layout | \
> -		documented,gitrevisions | \
> -		documented,gittutorial | \
> -		documented,gittutorial-2 | \
> +		documented,git-core-tutorial | \
> +		documented,git-cvs-migration | \
> +		documented,git-diffcore | \
> +		documented,git-glossary | \
> +		documented,git-hooks | \
> +		documented,git-repository-layout | \
> +		documented,git-revisions | \
> +		documented,git-tutorial | \
> +		documented,git-tutorial-2 | \
>  		documented,git-bisect-lk2009 | \
>  		documented,git-remote-helpers | \
> -		documented,gitworkflows | \
> +		documented,git-workflows | \
>  		sentinel,not,matching,is,ok ) continue ;; \
>  		esac; \
>  		case " $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git gitk " in \
> diff --git a/builtin/help.c b/builtin/help.c
> index 61ff798..d1f6736 100644
> --- a/builtin/help.c
> +++ b/builtin/help.c
> @@ -310,10 +310,8 @@ static const char *cmd_to_page(const char *git_cmd)
>  		return "git";
>  	else if (!prefixcmp(git_cmd, "git"))
>  		return git_cmd;
> -	else if (is_git_command(git_cmd))
> -		return prepend("git-", git_cmd);
>  	else
> -		return prepend("git", git_cmd);
> +		return prepend("git-", git_cmd);
>  }
>  
>  static void setup_man_path(void)

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-02  8:41   ` Michael J Gruber
@ 2010-09-02  8:55     ` Jonathan Nieder
  2010-09-02  9:09       ` Michael J Gruber
  2010-09-09 19:58     ` Jeff King
  1 sibling, 1 reply; 7+ messages in thread
From: Jonathan Nieder @ 2010-09-02  8:55 UTC (permalink / raw)
  To: Michael J Gruber; +Cc: git, Jeff King

Michael J Gruber wrote:
> Jonathan Nieder venit, vidit, dixit 02.09.2010 10:16:

>> Therefore this seems wrong to me (except as a backward-compatibility
>> measure).
[...]
> One heuristic, which I would have left for a later patch because of its
> radicality (and I think we're in some phase of some rc something), is to
> simply not do any checks when calling the viewers. This requires that
> everything is prepended with "git-", which I see you have done in
> builtin/help.c.

Yep, I agree with you in all respects, including the need to do
something else (like the patch you sent) for v1.7.3.

> Still, none-command help pages will not show up with
> "git help -a". So it's not a complete solution.

I think of "git --help -a" as a more complete version of the list
from "git --help" --- that is, it is explaining what subcommands are
available for git.

On the other hand, on platforms where "man -k git" is not available,
as you mention it is the index to the manual.  Maybe "git help" should
check GIT_HTML_PATH to provide a more complete index on such platforms.

Just musing.

> Alternatively, load_command_list() etc. could simply fill up a third
> list "other_pages" (with non-executables) so that "git help -a" could
> list "other help pages" in addition to the commands. I don't think this
> would require any renaming nor Documentation updates.

Looks like you had a similar thought.

> ??? I guess this patch makes sense only after a patch which renames all
> gitfoo.txt to git-foo.txt.

Well, there were ulterior motives to that patch: I keep on mistyping
half-hyphenated manpage names like gitcvs-migration.

I should have included some appropriate Makefile magic for
compatibility symlinks for the old names.  Hopefully at least the idea
was clear.

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-02  8:55     ` Jonathan Nieder
@ 2010-09-02  9:09       ` Michael J Gruber
  0 siblings, 0 replies; 7+ messages in thread
From: Michael J Gruber @ 2010-09-02  9:09 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: git, Jeff King

Jonathan Nieder venit, vidit, dixit 02.09.2010 10:55:
> Michael J Gruber wrote:
>> Jonathan Nieder venit, vidit, dixit 02.09.2010 10:16:
> 
>>> Therefore this seems wrong to me (except as a backward-compatibility
>>> measure).
> [...]
>> One heuristic, which I would have left for a later patch because of its
>> radicality (and I think we're in some phase of some rc something), is to
>> simply not do any checks when calling the viewers. This requires that
>> everything is prepended with "git-", which I see you have done in
>> builtin/help.c.
> 
> Yep, I agree with you in all respects, including the need to do
> something else (like the patch you sent) for v1.7.3.
> 
>> Still, none-command help pages will not show up with
>> "git help -a". So it's not a complete solution.
> 
> I think of "git --help -a" as a more complete version of the list
> from "git --help" --- that is, it is explaining what subcommands are
> available for git.
> 
> On the other hand, on platforms where "man -k git" is not available,
> as you mention it is the index to the manual.  Maybe "git help" should
> check GIT_HTML_PATH to provide a more complete index on such platforms.
> 
> Just musing.
> 
>> Alternatively, load_command_list() etc. could simply fill up a third
>> list "other_pages" (with non-executables) so that "git help -a" could
>> list "other help pages" in addition to the commands. I don't think this
>> would require any renaming nor Documentation updates.
> 
> Looks like you had a similar thought.
> 
>> ??? I guess this patch makes sense only after a patch which renames all
>> gitfoo.txt to git-foo.txt.
> 
> Well, there were ulterior motives to that patch: I keep on mistyping
> half-hyphenated manpage names like gitcvs-migration.

That's exactly why I use "git help foo" rather than "man git[-]?foo" and
want it to Just Work (TM);)

> I should have included some appropriate Makefile magic for
> compatibility symlinks for the old names.  Hopefully at least the idea
> was clear.

I was just wondering what this patch applies to - you must have
all-dashed documentation to begin with. And I actually think this would
be fine, unless we want to differentiate between command man pages and
other man pages by that. It's just that the shell libraries are half way
in between, and "git-remote-helpers.txt" is misnamed by that convention.

Michael

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

* Re: [RFC PATCH] git-help: find library man pages again
  2010-09-02  8:41   ` Michael J Gruber
  2010-09-02  8:55     ` Jonathan Nieder
@ 2010-09-09 19:58     ` Jeff King
  1 sibling, 0 replies; 7+ messages in thread
From: Jeff King @ 2010-09-09 19:58 UTC (permalink / raw)
  To: Michael J Gruber; +Cc: Jonathan Nieder, git

On Thu, Sep 02, 2010 at 10:41:56AM +0200, Michael J Gruber wrote:

> >  i.e. I think that is the same issue after all and that
> > builtin/help.c ought to learn another heuristic than is_git_command().
> 
> One heuristic, which I would have left for a later patch because of its
> radicality (and I think we're in some phase of some rc something), is to
> simply not do any checks when calling the viewers. This requires that
> everything is prepended with "git-", which I see you have done in
> builtin/help.c. Still, none-command help pages will not show up with
> "git help -a". So it's not a complete solution.

That was my first thought upon reading your patch, too. And something
like "s/gitworkflows/git-workflows/" is reasonable. But you can do "git
help attributes" and "git help ignore" now, and those should almost
certainly remain "gitattributes" and "gitignore" (at the very least, we
should still allow "git help gitattributes", which works now, but which
your proposal would break).

So maybe we could get by with "prepend git- unless it starts with git".

I dunno. The current behavior seems hack-ish, but I am loathe to change
names if people really prefer the existing ones. FWIW, I would actually
say "git help git-sh-setup", which in fact works (leading me to get
puzzled by your patch at first). So who knows what people are typing in
practice.

-Peff

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

end of thread, other threads:[~2010-09-09 19:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-01 16:02 [RFC PATCH] git-help: find library man pages again Michael J Gruber
2010-09-01 16:07 ` Michael J Gruber
2010-09-02  8:16 ` Jonathan Nieder
2010-09-02  8:41   ` Michael J Gruber
2010-09-02  8:55     ` Jonathan Nieder
2010-09-02  9:09       ` Michael J Gruber
2010-09-09 19:58     ` Jeff King

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