git/Documentation
Junio C Hamano e2eb527345 require-work-tree wants more than what its name says
Somebody tried "git pull" from a random place completely outside the work
tree, while exporting GIT_DIR and GIT_WORK_TREE that are set to correct
places, e.g.

    GIT_WORK_TREE=$HOME/git.git
    GIT_DIR=$GIT_WORK_TREE/.git
    export GIT_WORK_TREE GIT_DIR
    cd /tmp
    git pull

At the beginning of git-pull, we check "require-work-tree" and then
"cd-to-toplevel".  I _think_ the original intention when I wrote the
command was "we MUST have a work tree, our $(cwd) might not be at the
top-level directory of it", and no stronger than that.  That check is a
very sensible thing to do before doing cd-to-toplevel.  We check that the
place we would want to go exists, and then go there.

But the implementation of require_work_tree we have today is quite
different.  I don't have energy to dig the history, but currently it says:

    test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true ||
    die "fatal: $0 cannot be used without a working tree."

Which is completely bogus.  Even though we may happen to be just outside
of it right now, we may have a working tree that we can cd_to_toplevel
back to.

Add a function "require_work_tree_exists" that implements the check
this function originally intended (this is so that third-party scripts
that rely on the current behaviour do not have to get broken).

For now, update _no_ in-tree scripts, not even "git pull", as nobody on
the list seems to really care about the above corner case workflow that
triggered this. Scripts can be updated after vetting that they do want the
"we want to make sure the place we are going to go actually exists"
semantics.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-05-24 11:34:40 -07:00
..
RelNotes Git 1.7.4 2011-01-30 19:02:37 -08:00
howto Merge branch 'jn/cherry-revert-message-clean-up' 2010-08-31 16:25:11 -07:00
pt_BR
technical Fix typos in the documentation 2011-01-04 11:23:42 -08:00
.gitattributes
.gitignore Documentation: Avoid use of xmlto --stringparam 2009-12-05 10:03:49 -08:00
CodingGuidelines Fix typos in the documentation 2011-01-04 11:23:42 -08:00
Makefile docs: default to more modern toolset 2010-11-24 15:13:58 -08:00
SubmittingPatches SubmittingPatches: Document some extra tags used in commit messages 2010-10-06 13:45:42 -07:00
asciidoc.conf Merge branch 'jc/maint-doc-em-dash' 2010-09-03 09:43:42 -07:00
blame-options.txt blame-options.txt: Add default value for `-M/-C` options. 2010-05-07 09:34:59 -07:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
config.txt Documentation updates for 'GIT_WORK_TREE without GIT_DIR' historical usecase 2011-01-24 10:13:59 -08:00
date-formats.txt Document date formats accepted by parse_date() 2009-12-03 12:41:37 -08:00
diff-format.txt Fix typos in technical documentation. 2010-01-31 10:24:53 -08:00
diff-generate-patch.txt Clarify and extend the "git diff" format documentation 2010-10-19 14:15:30 -07:00
diff-options.txt diff: use "find" instead of "detect" as prefix for long forms of -M and -C 2010-12-10 13:52:05 -08:00
docbook-xsl.css
docbook.xsl Documentation: set a !DOCTYPE for user manual 2010-08-20 10:53:56 -07:00
everyday.txt everyday.txt: change "tracking branch" to "remote-tracking branch" 2010-11-03 09:19:10 -07:00
fetch-options.txt Merge branch 'jl/fetch-submodule-recursive' 2010-12-16 12:57:15 -08:00
fix-texi.perl
git-add.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
git-am.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-annotate.txt
git-apply.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-archimport.txt Martin Langhoff has a new e-mail address 2010-10-06 12:08:48 -07:00
git-archive.txt Merge branch 'maint-1.7.2' into maint 2011-01-10 10:39:28 -08:00
git-bisect-lk2009.txt Documentation: remove stray backslashes from "Fighting regressions" article 2010-08-20 14:16:51 -07:00
git-bisect.txt Documentation: add "Fighting regressions with git bisect" article 2009-11-08 18:29:08 -08:00
git-blame.txt blame: Add option to show author email instead of name 2010-10-19 12:00:28 -07:00
git-branch.txt git-branch.txt: mention --set-upstream as a way to change upstream configuration 2010-11-03 09:20:48 -07:00
git-bundle.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
git-cat-file.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
git-check-attr.txt
git-check-ref-format.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
git-checkout-index.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-checkout.txt Change incorrect uses of "remote branch" meaning "remote-tracking" 2010-11-03 09:20:47 -07:00
git-cherry-pick.txt Documentation: Fix mark-up of lines with more than one tilde 2010-12-02 11:30:35 -08:00
git-cherry.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-citool.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-clean.txt Add -e/--exclude to git-clean. 2010-07-20 16:52:53 -07:00
git-clone.txt Merge branch 'jl/clone-recurse-sm-synonym' 2010-11-29 17:52:34 -08:00
git-commit-tree.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-commit.txt Merge branch 'pn/commit-autosquash' 2010-12-03 16:13:06 -08:00
git-config.txt Merge remote branch 'remotes/trast-doc/for-next' 2010-01-20 20:28:49 -08:00
git-count-objects.txt
git-cvsexportcommit.txt Martin Langhoff has a new e-mail address 2010-10-06 12:08:48 -07:00
git-cvsimport.txt Documentation: spelling fixes 2010-07-20 16:59:17 -07:00
git-cvsserver.txt Martin Langhoff has a new e-mail address 2010-10-06 12:08:48 -07:00
git-daemon.txt daemon: make --inetd and --detach incompatible 2010-11-04 16:53:52 -07:00
git-describe.txt Change incorrect uses of "remote branch" meaning "remote-tracking" 2010-11-03 09:20:47 -07:00
git-diff-files.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-diff-index.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-diff-tree.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-diff.txt docs: clarify git diff modes of operation 2010-11-05 10:05:46 -07:00
git-difftool.txt Merge branch 'maint' 2010-12-16 16:36:03 -08:00
git-fast-export.txt Use angles for placeholders consistently 2010-10-08 12:29:52 -07:00
git-fast-import.txt Documentation/fast-import: put explanation of M 040000 <dataref> "" in context 2011-01-18 16:51:13 -08:00
git-fetch-pack.txt Documentation: describe --thin more accurately 2010-02-18 17:13:18 -08:00
git-fetch.txt Change "tracking branch" to "remote-tracking branch" 2010-11-03 09:20:41 -07:00
git-filter-branch.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-fmt-merge-msg.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
git-for-each-ref.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-format-patch.txt Merge branch 'maint' 2010-10-13 20:20:09 -07:00
git-fsck-objects.txt
git-fsck.txt fsck docs: remove outdated and useless diagnostic 2010-12-18 22:58:40 -08:00
git-gc.txt Merge branch 'maint' 2010-12-19 17:49:42 -08:00
git-get-tar-commit-id.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-grep.txt Documentation: add missing quotes to "git grep" examples 2010-08-20 14:16:21 -07:00
git-gui.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-hash-object.txt Documentation: spelling fixes 2010-07-20 16:59:17 -07:00
git-help.txt Work around em-dash handling in newer AsciiDoc 2010-08-24 09:48:20 -07:00
git-http-backend.txt Documentation: Clarify support for smart HTTP backend 2010-03-30 16:49:19 -07:00
git-http-fetch.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-http-push.txt Use 'fast-forward' all over the place 2009-10-24 23:50:28 -07:00
git-imap-send.txt Merge branch 'rr/imap-send-unconfuse-from-line' 2010-04-03 12:28:42 -07:00
git-index-pack.txt Use angles for placeholders consistently 2010-10-08 12:29:52 -07:00
git-init-db.txt
git-init.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-instaweb.txt Merge branch 'jc/maint-doc-em-dash' 2010-09-03 09:43:42 -07:00
git-log.txt Replace "remote tracking" with "remote-tracking" 2010-11-03 09:19:04 -07:00
git-lost-found.txt
git-ls-files.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-ls-remote.txt
git-ls-tree.txt Use angles for placeholders consistently 2010-10-08 12:29:52 -07:00
git-mailinfo.txt git-mailinfo documentation: clarify -u/--encoding 2010-06-13 20:18:23 -07:00
git-mailsplit.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-merge-base.txt merge-base --independent to print reduced parent list in a merge 2010-08-18 14:02:03 -07:00
git-merge-file.txt merge-file: add option to select union merge favor 2010-03-02 21:16:45 -08:00
git-merge-index.txt Documentation: remove backslashes in manpage synopses 2010-08-20 14:16:22 -07:00
git-merge-one-file.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-merge-tree.txt
git-merge.txt Merge branch 'jh/notes-merge' 2010-12-08 11:24:12 -08:00
git-mergetool--lib.txt Work around em-dash handling in newer AsciiDoc 2010-08-24 09:48:20 -07:00
git-mergetool.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-mktag.txt
git-mktree.txt
git-mv.txt
git-name-rev.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-notes.txt Provide 'git notes get-ref' to easily retrieve current notes ref 2010-11-17 13:23:55 -08:00
git-pack-objects.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-pack-redundant.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-pack-refs.txt
git-parse-remote.txt
git-patch-id.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-peek-remote.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-prune-packed.txt
git-prune.txt prune: allow --dry-run for -n and --verbose for -v 2010-08-09 10:13:18 -07:00
git-pull.txt Merge branch 'ja/maint-pull-rebase-doc' into maint 2010-12-14 07:36:23 -08:00
git-push.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
git-quiltimport.txt
git-read-tree.txt Merge branch 'nd/maint-fix-add-typo-detection' 2010-12-22 14:40:26 -08:00
git-rebase.txt rebase: support --verify 2010-11-23 12:15:43 -08:00
git-receive-pack.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-reflog.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
git-relink.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-remote-ext.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
git-remote-fd.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
git-remote-helpers.txt Documentation/remote-helpers: Fix typos and improve language 2010-04-18 13:56:29 -07:00
git-remote.txt Change "tracking branch" to "remote-tracking branch" 2010-11-03 09:20:41 -07:00
git-repack.txt Merge branch 'jk/repack-reuse-object' into maint 2010-11-24 12:45:07 -08:00
git-replace.txt Documentation: format full commands in typewriter font 2010-01-10 13:01:25 +01:00
git-repo-config.txt
git-request-pull.txt request-pull.txt: Document -p option 2010-07-25 21:52:19 -07:00
git-rerere.txt rerere.txt: Document forget subcommand 2010-07-05 11:51:20 -07:00
git-reset.txt Documentation: do not treat reset --keep as a special case 2011-01-21 12:41:14 -08:00
git-rev-list.txt Use parentheses and `...' where appropriate 2010-10-08 12:31:07 -07:00
git-rev-parse.txt git-rev-parse.txt: clarify --git-dir 2010-11-29 13:26:00 -08:00
git-revert.txt Documentation: Fix mark-up of lines with more than one tilde 2010-12-02 11:30:35 -08:00
git-rm.txt git-rm.txt: Fix quoting 2010-12-07 13:13:21 -08:00
git-send-email.txt Merge branch 'maint' 2010-12-10 16:36:53 -08:00
git-send-pack.txt Documentation: describe --thin more accurately 2010-02-18 17:13:18 -08:00
git-sh-setup.txt require-work-tree wants more than what its name says 2011-05-24 11:34:40 -07:00
git-shell.txt shell: Rewrite documentation and improve error message 2010-08-24 10:47:21 -07:00
git-shortlog.txt Remove stray quotes in --pretty and --format documentation 2010-10-08 12:31:07 -07:00
git-show-branch.txt Merge branch 'sn/doc-opt-notation' into maint 2010-10-21 16:26:42 -07:00
git-show-index.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-show-ref.txt git-show-ref.txt: clarify the pattern matching 2010-10-19 14:15:30 -07:00
git-show.txt Documentation: document show -s 2010-11-09 09:42:57 -08:00
git-stage.txt
git-stash.txt detached-stash: update Documentation 2010-08-21 23:51:22 -07:00
git-status.txt Submodules: Use "ignore" settings from .gitmodules too for diff and status 2010-08-09 09:11:44 -07:00
git-stripspace.txt
git-submodule.txt git submodule add: Remove old docs about implicit -f 2010-07-19 11:11:07 -07:00
git-svn.txt git svn: fix the final example in man page 2011-01-07 21:50:11 +00:00
git-symbolic-ref.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-tag.txt Change "tracking branch" to "remote-tracking branch" 2010-11-03 09:20:41 -07:00
git-tar-tree.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-tools.txt
git-unpack-file.txt
git-unpack-objects.txt
git-update-index.txt Merge branch 'sn/doc-opt-notation' into maint 2010-10-21 16:26:42 -07:00
git-update-ref.txt
git-update-server-info.txt
git-upload-archive.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-upload-pack.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-var.txt Fix 'git var' usage synopsis 2010-02-14 18:23:16 -08:00
git-verify-pack.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-verify-tag.txt verify-tag: document --verbose 2010-11-15 10:05:54 -08:00
git-web--browse.txt web--browse: better support for chromium 2010-12-03 14:05:32 -08:00
git-whatchanged.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git-write-tree.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
git.txt Git 1.7.4 2011-01-30 19:02:37 -08:00
gitattributes.txt Merge branch 'jn/perl-funcname' 2011-01-13 11:38:05 -08:00
gitcli.txt
gitcore-tutorial.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
gitcvs-migration.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
gitdiffcore.txt gitdiffcore doc: update pickaxe description 2010-08-31 14:28:20 -07:00
gitglossary.txt
githooks.txt Documentation/githooks: post-rewrite-copy-notes never existed 2011-01-10 09:09:02 -08:00
gitignore.txt Documentation: point to related commands from gitignore 2010-11-11 10:57:16 -08:00
gitk.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
gitmodules.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
gitrepository-layout.txt Documentation: spelling fixes 2010-07-20 16:59:17 -07:00
gitrevisions.txt Documentation: gitrevisions 2010-07-05 13:39:02 -07:00
gittutorial-2.txt Better "Changed but not updated" message in git-status 2010-11-03 09:18:58 -07:00
gittutorial.txt Change remote tracking to remote-tracking in non-trivial places 2010-11-03 09:19:08 -07:00
gitworkflows.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
glossary-content.txt Change "tracking branch" to "remote-tracking branch" 2010-11-03 09:20:41 -07:00
howto-index.sh
i18n.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
install-doc-quick.sh
install-webdoc.sh install-webdoc: keep installed RelNotes-*.txt 2010-09-09 16:17:59 -07:00
mailmap.txt
manpage-1.72.xsl
manpage-base-url.xsl.in Documentation: Avoid use of xmlto --stringparam 2009-12-05 10:03:49 -08:00
manpage-base.xsl
manpage-bold-literal.xsl
manpage-normal.xsl
manpage-quote-apos.xsl
manpage-suppress-sp.xsl
merge-config.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
merge-options.txt merge: Make '--log' an integer option for number of shortlog entries 2010-09-09 11:39:20 -07:00
merge-strategies.txt Merge branch 'kb/merge-recursive-rename-threshold' 2010-10-26 21:54:04 -07:00
pretty-formats.txt pretty: Introduce ' ' modifier to add space if non-empty 2010-06-16 14:45:09 -07:00
pretty-options.txt Remove stray quotes in --pretty and --format documentation 2010-10-08 12:31:07 -07:00
pull-fetch-param.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
rev-list-options.txt Merge branch 'mm/phrase-remote-tracking' 2010-11-24 15:55:05 -08:00
revisions.txt Merge branch 'nd/oneline-sha1-name-from-specific-ref' 2010-12-21 14:30:19 -08:00
urls-remotes.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
urls.txt Documentation: spelling fixes 2010-07-20 16:59:17 -07:00
user-manual.conf
user-manual.txt user-manual: remote-tracking can be checked out, with detached HEAD 2010-11-03 09:20:48 -07:00