{"thread":{"id":"28862","subject":"What's cooking in git.git (Nov 2011, #02; Sun, 6)","startedAt":"2011-11-06T20:17:02Z","lastAt":"2011-11-08T21:34:46Z","messageCount":7,"participants":["Junio C Hamano","Jakub Narebski","Stefan Näwe","Stefan Naewe"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"178981","messageId":"7vehxl57lt.fsf@alter.siamese.dyndns.org","threadId":"28862","inReplyTo":null,"subject":"What's cooking in git.git (Nov 2011, #02; Sun, 6)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-06T20:17:02Z","receivedAt":"2011-11-06T20:17:02Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Here are the topics that have been cooking.  Commits prefixed with '-' are\nonly in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.\n\nI was planning to tag -rc1 over the weekend, but will let it slip for a\nfew days, as a couple of regression fixes came in that I'd like to have\nin it. They are in 'next' in today's integration result.\n\nHere are the repositories that have my integration branches:\n\nWith maint, master, next, pu, todo:\n\n        git://git.kernel.org/pub/scm/git/git.git\n        git://repo.or.cz/alt-git.git\n        https://code.google.com/p/git-core/\n        https://github.com/git/git\n\nWith only maint and master:\n\n        git://git.sourceforge.jp/gitroot/git-core/git.git\n        git://git-core.git.sourceforge.net/gitroot/git-core/git-core\n\nWith all the topics and integration branches but not todo, html or man:\n\n        https://github.com/gitster/git\n\nI will stop pushing the generated documentation branches to the above\nrepositories, as they are not sources. The only reason the source\nrepository at k.org has hosted these branches was because it was the only\nrepository over there that was writable by me; it was an ugly historical\nand administrative workaround and not a demonstration of the best\npractice.\n\nThese branches are pushed to their own separate repositories instead:\n\n        git://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/\n        git://repo.or.cz/git-{htmldocs,manpages}.git/\n        https://code.google.com/p/git-{htmldocs,manpages}.git/\n        https://github.com/gitster/git-{htmldocs,manpages}.git/\n\n--------------------------------------------------\n[New Topics]\n\n* jc/pull-signed-tag (2011-11-04) 10 commits\n - merge: force edit mode when merging a tag object\n - fmt-merge-msg: Add contents of merged tag in the merge message\n - fmt-merge-msg: package options into a structure\n - fmt-merge-msg: avoid early returns\n - refs DWIMmery: use the same rule for both \"git fetch\" and others\n - tests: distinguish merges of tags and commits\n - fetch: allow \"git fetch $there v1.0\" to fetch a tag\n - merge: notice local merging of tags and keep it unwrapped\n - fetch: do not store peeled tag object names in FETCH_HEAD\n - Split GPG interface into its own helper library\n\nFourth round but needs further updates.\nWill keep in 'pu' for now.\n\n* sn/http-auth-with-netrc-fix (2011-11-04) 1 commit\n  (merged to 'next' on 2011-11-06 at 60b7f96)\n + http: don't always prompt for password\n\nRegression fix for the upcoming release.\nWill merge by 1.7.8 final.\n\n* ab/clang-lints (2011-11-06) 2 commits\n - cast variable in call to free() in builtin/diff.c and submodule.c\n - apply: get rid of useless x < 0 comparison on a size_t type\n\nNot urgent.\n\n* ab/i18n-test-fix (2011-11-05) 2 commits\n  (merged to 'next' on 2011-11-06 at f1de9a6)\n + t/t7508-status.sh: use test_i18ncmp\n + t/t6030-bisect-porcelain.sh: use test_i18ngrep\n\nWill merge by 1.7.8 final.\n\n* ab/pull-rebase-config (2011-11-06) 1 commit\n - pull: introduce a pull.rebase option to enable --rebase\n\nNot urgent.\n\n* eh/grep-scale-to-cpunum (2011-11-05) 1 commit\n - grep: detect number of CPUs for thread spawning\n\nKills I/O parallelism and needs to be improved or discarded.\n\n* nd/fsck-progress (2011-11-05) 4 commits\n - fsck: print progress\n - fsck: avoid reading every object twice\n - Stop verify_packfile() as soon as an error occurs\n - fsck: return error code when verify_pack() goes wrong\n\nNot urgent.\n\n* nd/prune-progress (2011-11-05) 1 commit\n - prune: show progress while marking reachable objects\n\nNot urgent.\n\n* pw/p4-appledouble-fix (2011-11-05) 1 commit\n  (merged to 'next' on 2011-11-06 at 2ec0af3)\n + git-p4: ignore apple filetype\n\nRegression fix for the upcoming release.\nWill merge by 1.7.8 final.\n\n* sr/fix-fast-export-tips (2011-11-05) 3 commits\n - fast-export: output reset command for commandline revs\n - fast-export: do not refer to non-existing marks\n - t9350: point out that refs are not updated correctly\n\n--------------------------------------------------\n[Stalled]\n\n* hv/submodule-merge-search (2011-10-13) 4 commits\n - submodule.c: make two functions static\n - allow multiple calls to submodule merge search for the same path\n - push: Don't push a repository with unpushed submodules\n - push: teach --recurse-submodules the on-demand option\n\nWhat the topic aims to achieve may make sense, but the implementation\nlooked somewhat suboptimal.\n\n* sr/transport-helper-fix-rfc (2011-07-19) 2 commits\n - t5800: point out that deleting branches does not work\n - t5800: document inability to push new branch with old content\n\nPerhaps 281eee4 (revision: keep track of the end-user input from the\ncommand line, 2011-08-25) would help.\n\n* jc/lookup-object-hash (2011-08-11) 6 commits\n - object hash: replace linear probing with 4-way cuckoo hashing\n - object hash: we know the table size is a power of two\n - object hash: next_size() helper for readability\n - pack-objects --count-only\n - object.c: remove duplicated code for object hashing\n - object.c: code movement for readability\n\nI do not think there is anything fundamentally wrong with this series, but\nthe risk of breakage far outweighs observed performance gain in one\nparticular workload.\n\n* jc/verbose-checkout (2011-10-16) 2 commits\n - checkout -v: give full status output after switching branches\n - checkout: move the local changes report to the end\n\nThis is just to leave a record that the reason why we do not do this not\nbecause we are incapable of coding this, but because it is not a good idea\nto do this. I suspect people who are new to git that might think they need\nit would soon realize the don't.\n\nWill keep in 'pu' as a showcase for a while and then will drop.\n\n--------------------------------------------------\n[Cooking]\n\n* jc/stream-to-pack (2011-11-03) 4 commits\n - Bulk check-in\n - finish_tmp_packfile(): a helper function\n - create_tmp_packfile(): a helper function\n - write_pack_header(): a helper function\n\nTeaches \"git add\" to send large-ish blob data straight to a packfile.\nThis is a continuation to the \"large file support\" topic. I think this\ncodepath to move data from worktree to repository needs to become aware of\nstreaming, just like the checkout codepath that goes the other way, which\nwas done in the previous \"large file support\" topic in the 1.7.7 cycle.\n\n* jn/gitweb-side-by-side-diff (2011-10-31) 8 commits\n - gitweb: Add navigation to select side-by-side diff\n - gitweb: Use href(-replay=>1,...) for formats links in \"commitdiff\"\n - t9500: Add basic sanity tests for side-by-side diff in gitweb\n - t9500: Add test for handling incomplete lines in diff by gitweb\n - gitweb: Give side-by-side diff extra CSS styling\n - gitweb: Add a feature to show side-by-side diff\n - gitweb: Extract formatting of diff chunk header\n - gitweb: Refactor diff body line classification\n\nReplaces a series from Kato Kazuyoshi on the same topic.\n\n* vr/msvc (2011-10-31) 3 commits\n - MSVC: Remove unneeded header stubs\n - Compile fix for MSVC: Include <io.h>\n - Compile fix for MSVC: Do not include sys/resources.h\n\nIt seems this needs to be rehashed with msysgit folks.\n\n* mf/curl-select-fdset (2011-11-04) 4 commits\n  (merged to 'next' on 2011-11-06 at a49516f)\n + http: drop \"local\" member from request struct\n + http.c: Rely on select instead of tracking whether data was received\n + http.c: Use timeout suggested by curl instead of fixed 50ms timeout\n + http.c: Use curl_multi_fdset to select on curl fds instead of just sleeping\n\nReduces unnecessary waits.\n\n* na/strtoimax (2011-11-05) 3 commits\n - Support sizes >=2G in various config options accepting 'g' sizes.\n - Compatibility: declare strtoimax() under NO_STRTOUMAX\n - Add strtoimax() compatibility function.\n\n* nd/misc-cleanups (2011-10-27) 6 commits\n  (merged to 'next' on 2011-10-28 at 2527a49)\n + unpack_object_header_buffer(): clear the size field upon error\n + tree_entry_interesting: make use of local pointer \"item\"\n + tree_entry_interesting(): give meaningful names to return values\n + read_directory_recursive: reduce one indentation level\n + get_tree_entry(): do not call find_tree_entry() on an empty tree\n + tree-walk.c: do not leak internal structure in tree_entry_len()\n\nThese are unquestionably good parts taken out of a larger series, so that\nwe can focus more on the other changes in later rounds of review.\n\nWill keep in 'next' during this cycle.\n\n* rs/allocate-cache-entry-individually (2011-10-26) 2 commits\n  (merged to 'next' on 2011-10-27 at 2e4acd6)\n + cache.h: put single NUL at end of struct cache_entry\n + read-cache.c: allocate index entries individually\n\nWill keep in 'next' during this cycle.\n\n* mh/ref-api-3 (2011-10-19) 11 commits\n  (merged to 'next' on 2011-10-23 at 92e2d35)\n + is_refname_available(): reimplement using do_for_each_ref_in_array()\n + names_conflict(): simplify implementation\n + names_conflict(): new function, extracted from is_refname_available()\n + repack_without_ref(): reimplement using do_for_each_ref_in_array()\n + do_for_each_ref_in_array(): new function\n + do_for_each_ref(): correctly terminate while processesing extra_refs\n + add_ref(): take a (struct ref_entry *) parameter\n + create_ref_entry(): extract function from add_ref()\n + parse_ref_line(): add a check that the refname is properly formatted\n + repack_without_ref(): remove temporary\n + Rename another local variable name -> refname\n (this branch uses mh/ref-api-2.)\n\nWill keep in 'next' during this cycle.\n\n* rr/revert-cherry-pick (2011-10-23) 5 commits\n  (merged to 'next' on 2011-10-26 at 27b7496)\n + revert: simplify communicating command-line arguments\n + revert: allow mixed pick and revert instructions\n + revert: make commit subjects in insn sheet optional\n + revert: simplify getting commit subject in format_todo()\n + revert: free msg in format_todo()\n\nThe internals of \"git revert/cherry-pick\" has been further refactored to\nserve as the basis for the sequencer.\n\nWill keep in 'next' during this cycle.\n\n* jc/check-ref-format-fixup (2011-10-19) 2 commits\n  (merged to 'next' on 2011-10-19 at 98981be)\n + Revert \"Restrict ref-like names immediately below $GIT_DIR\"\n  (merged to 'next' on 2011-10-15 at 8e89bc5)\n + Restrict ref-like names immediately below $GIT_DIR\n\nThis became a no-op except for the bottom one which is part of the other\ntopic now.\nWill discard once the other topic graduates to 'master'.\n\n* cb/daemon-permission-errors (2011-10-17) 2 commits\n - daemon: report permission denied error to clients\n - daemon: add tests\n\nThe tip commit might be loosening things a bit too much.\nWill keep in 'pu' until hearing a convincing argument for the patch.\n\n* mh/ref-api-2 (2011-10-17) 14 commits\n  (merged to 'next' on 2011-10-19 at cc89f0e)\n + resolve_gitlink_ref_recursive(): change to work with struct ref_cache\n + Pass a (ref_cache *) to the resolve_gitlink_*() helper functions\n + resolve_gitlink_ref(): improve docstring\n + get_ref_dir(): change signature\n + refs: change signatures of get_packed_refs() and get_loose_refs()\n + is_dup_ref(): extract function from sort_ref_array()\n + add_ref(): add docstring\n + parse_ref_line(): add docstring\n + is_refname_available(): remove the \"quiet\" argument\n + clear_ref_array(): rename from free_ref_array()\n + refs: rename parameters result -> sha1\n + refs: rename \"refname\" variables\n + struct ref_entry: document name member\n + cache.h: add comments for git_path() and git_path_submodule()\n (this branch is used by mh/ref-api-3.)\n\nWill keep in 'next' during this cycle.\n\n* jc/signed-commit (2011-10-21) 7 commits\n  (merged to 'next' on 2011-10-23 at 03eec25)\n + pretty: %G[?GS] placeholders\n + parse_signed_commit: really use the entire commit log message\n + test \"commit -S\" and \"log --show-signature\"\n + t7004: extract generic \"GPG testing\" bits\n + log: --show-signature\n + commit: teach --gpg-sign option\n + Split GPG interface into its own helper library\n\nThis is to replace the earlier \"signed push\" experiments.\nWill keep in 'next' during this cycle.\n\n* sg/complete-refs (2011-10-21) 9 commits\n  (merged to 'next' on 2011-10-26 at d65e2b4)\n + completion: remove broken dead code from __git_heads() and __git_tags()\n + completion: fast initial completion for config 'remote.*.fetch' value\n + completion: improve ls-remote output filtering in __git_refs_remotes()\n + completion: query only refs/heads/ in __git_refs_remotes()\n + completion: support full refs from remote repositories\n + completion: improve ls-remote output filtering in __git_refs()\n + completion: make refs completion consistent for local and remote repos\n + completion: optimize refs completion\n + completion: document __gitcomp()\n\nWill keep in 'next' until an Ack or two from completion folks.\n\n* jc/request-pull-show-head-4 (2011-10-15) 11 commits\n  (merged to 'next' on 2011-10-15 at 7e340ff)\n + fmt-merge-msg.c: Fix an \"dubious one-bit signed bitfield\" sparse error\n  (merged to 'next' on 2011-10-10 at 092175e)\n + environment.c: Fix an sparse \"symbol not declared\" warning\n + builtin/log.c: Fix an \"Using plain integer as NULL pointer\" warning\n  (merged to 'next' on 2011-10-07 at fcaeca0)\n + fmt-merge-msg: use branch.$name.description\n  (merged to 'next' on 2011-10-06 at fa5e0fe)\n + request-pull: use the branch description\n + request-pull: state what commit to expect\n + request-pull: modernize style\n + branch: teach --edit-description option\n + format-patch: use branch description in cover letter\n + branch: add read_branch_desc() helper function\n + Merge branch 'bk/ancestry-path' into jc/branch-desc\n\nAllow setting \"description\" for branches and use it to help communications\nbetween humans in various workflow elements.\n\nWill keep in 'next' during this cycle.\n\n--------------------------------------------------\n[Discarded]\n\n* kk/gitweb-side-by-side-diff (2011-10-17) 2 commits\n . gitweb: add a feature to show side-by-side diff\n . gitweb: change format_diff_line() to remove leading SP from $diff_class\n"},{"id":"178985","messageId":"m3sjm12cty.fsf@localhost.localdomain","threadId":"28862","inReplyTo":"7vehxl57lt.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Nov 2011, #02; Sun, 6)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2011-11-06T20:52:58Z","receivedAt":"2011-11-06T20:52:58Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> With maint, master, next, pu, todo:\n> \n>         git://git.kernel.org/pub/scm/git/git.git\n>         git://repo.or.cz/alt-git.git\n>         https://code.google.com/p/git-core/\n>         https://github.com/git/git\n> \n> With only maint and master:\n> \n>         git://git.sourceforge.jp/gitroot/git-core/git.git\n>         git://git-core.git.sourceforge.net/gitroot/git-core/git-core\n> \n> With all the topics and integration branches but not todo, html or man:\n> \n>         https://github.com/gitster/git\n> \n> I will stop pushing the generated documentation branches to the above\n> repositories, as they are not sources. The only reason the source\n> repository at k.org has hosted these branches was because it was the only\n> repository over there that was writable by me; it was an ugly historical\n> and administrative workaround and not a demonstration of the best\n> practice.\n\nErrr... haven't you *actually stopped* pusing generated documentation\nto 'html' and 'man' branches to above repositories?  They are not\npresent anymore (I had to update my pre-separate-remotes config).\n \n> These branches are pushed to their own separate repositories instead:\n> \n>         git://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/\n>         git://repo.or.cz/git-{htmldocs,manpages}.git/\n>         https://code.google.com/p/git-{htmldocs,manpages}.git/\n>         https://github.com/gitster/git-{htmldocs,manpages}.git/\n\nYou can always put the fommowing in .git/config:\n\n  [remote \"git-manpages\"]\n  \turl = git://git.kernel.org/pub/scm/git/git-manpages.git\n  \tfetch = +refs/heads/master:refs/remotes/origin/man\n  \n  [remote \"git-htmldocs\"]\n  \turl = git://git.kernel.org/pub/scm/git/git-htmldocs.git\n  \tfetch = +refs/heads/master:refs/remotes/origin/html\n\n\n> --------------------------------------------------\n[...]\n> * jn/gitweb-side-by-side-diff (2011-10-31) 8 commits\n>  - gitweb: Add navigation to select side-by-side diff\n>  - gitweb: Use href(-replay=>1,...) for formats links in \"commitdiff\"\n>  - t9500: Add basic sanity tests for side-by-side diff in gitweb\n>  - t9500: Add test for handling incomplete lines in diff by gitweb\n>  - gitweb: Give side-by-side diff extra CSS styling\n>  - gitweb: Add a feature to show side-by-side diff\n>  - gitweb: Extract formatting of diff chunk header\n>  - gitweb: Refactor diff body line classification\n> \n> Replaces a series from Kato Kazuyoshi on the same topic.\n\nThanks.\n\n\nSidenote : is there need for wupport for word-diff in gitweb?\nIf yes, then navigation as in above series i.e.\n\n    inline | _side-by-side_\n\nwhere current style is not linked would be better than alternative,\ni.e. just\n\n   _side-by-side_\n\nor\n\n   _inline_\n \ndepending on what style you use.\n\n-- \nJakub Narębski\n"},{"id":"179134","messageId":"4EB91D2C.6020504@atlas-elektronik.com","threadId":"28862","inReplyTo":"7vehxl57lt.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Nov 2011, #02; Sun, 6)","fromName":"Stefan Näwe","fromEmail":"stefan.naewe@atlas-elektronik.com","sentAt":"2011-11-08T12:14:36Z","receivedAt":"2011-11-08T12:14:36Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"Am 06.11.2011 21:17, schrieb Junio C Hamano:\n> Here are the topics that have been cooking.  Commits prefixed with '-' are\n> only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.\n> \n> [...]\n> \n> With all the topics and integration branches but not todo, html or man:\n> \n>         https://github.com/gitster/git\n> \n> I will stop pushing the generated documentation branches to the above\n> repositories, as they are not sources. \n\nThis breaks the 'quick-install-{doc,html,man}' make targets, btw.\n \n> These branches are pushed to their own separate repositories instead:\n> \n>         git://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/\n>         git://repo.or.cz/git-{htmldocs,manpages}.git/\n>         https://code.google.com/p/git-{htmldocs,manpages}.git/\n>         https://github.com/gitster/git-{htmldocs,manpages}.git/\n\nI had to create remotes for those repositories (named htmldocs and manpages) \nand put this into config.mak to make it work again:\n\n  HTML_REF=htmldocs/master\n  DOC_REF=manpages/master\n\nJust FYI...\n\nStefan\n-- \n----------------------------------------------------------------\n/dev/random says: Brain: The apparatus with which we think that we think.\npython -c \"print '73746566616e2e6e616577654061746c61732d656c656b74726f6e696b2e636f6d'.decode('hex')\"\n"},{"id":"179143","messageId":"7v8vnqzitb.fsf@alter.siamese.dyndns.org","threadId":"28862","inReplyTo":"4EB91D2C.6020504@atlas-elektronik.com","subject":"Re: What's cooking in git.git (Nov 2011, #02; Sun, 6)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-08T16:21:20Z","receivedAt":"2011-11-08T16:21:20Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Stefan Näwe <stefan.naewe@atlas-elektronik.com> writes:\n\n> This breaks the 'quick-install-{doc,html,man}' make targets, btw.\n\nThanks. As the \"push into kernel.org auto-rebuilds these branches\"\ninfrastructure is no longer available, I think we should remove these\ntargets and description of them in the INSTALL file in the meantime.\n\nAnybody care to do a big removal patch?\n"},{"id":"179154","messageId":"7vr51ixyuz.fsf_-_@alter.siamese.dyndns.org","threadId":"28862","inReplyTo":"7v8vnqzitb.fsf@alter.siamese.dyndns.org","subject":"Update install-doc-quick (Re* What's cooking in git.git (Nov 2011, #02; Sun, 6))","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-08T18:17:40Z","receivedAt":"2011-11-08T18:17:40Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Stefan Näwe <stefan.naewe@atlas-elektronik.com> writes:\n>\n>> This breaks the 'quick-install-{doc,html,man}' make targets, btw.\n>\n> Thanks. As the \"push into kernel.org auto-rebuilds these branches\"\n> infrastructure is no longer available, I think we should remove these\n> targets and description of them in the INSTALL file in the meantime.\n>\n> Anybody care to do a big removal patch?\n\nAlternatively, we could keep it alive if people really want it, like this.\n\nStefan, care to apply it on top of 'maint' and try it out?\n\n Documentation/Makefile             |   23 +++++++++++++++-----\n Documentation/install-doc-quick.sh |   40 +++++++++++++++++++++--------------\n INSTALL                            |   29 ++-----------------------\n 3 files changed, 44 insertions(+), 48 deletions(-)\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 6346a75..5a340fd 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -46,8 +46,8 @@ MANPAGE_XSL = manpage-normal.xsl\n XMLTO_EXTRA =\n INSTALL?=install\n RM ?= rm -f\n-DOC_REF = origin/man\n-HTML_REF = origin/html\n+MAN_REPO = ../../git-manpages\n+HTML_REPO = ../../git-htmldocs\n \n infodir?=$(prefix)/share/info\n MAKEINFO=makeinfo\n@@ -327,12 +327,23 @@ $(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt\n install-webdoc : html\n \t'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)\n \n+# You must have a clone of git-htmldocs and git-manpages repositories\n+# next to the git repository itself for the following to work.\n+\n quick-install: quick-install-man\n \n-quick-install-man:\n-\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir)\n+require-manrepo::\n+\t@if test ! -d $(MAN_REPO); \\\n+\tthen echo \"git-manpages repository must exist at $(MAN_REPO)\"; exit 1; fi\n+\n+quick-install-man: require-manrepo\n+\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir)\n+\n+require-htmlrepo::\n+\t@if test ! -d $(HTML_REPO); \\\n+\tthen echo \"git-htmldocs repository must exist at $(HTML_REPO)\"; exit 1; fi\n \n-quick-install-html:\n-\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)\n+quick-install-html: require-htmlrepo\n+\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir)\n \n .PHONY: FORCE\ndiff --git a/Documentation/install-doc-quick.sh b/Documentation/install-doc-quick.sh\nindex 35f4408..bbf0a21 100755\n--- a/Documentation/install-doc-quick.sh\n+++ b/Documentation/install-doc-quick.sh\n@@ -1,29 +1,37 @@\n #!/bin/sh\n-# This requires a branch named in $head\n-# (usually 'man' or 'html', provided by the git.git repository)\n-set -e\n-head=\"$1\"\n-mandir=\"$2\"\n-SUBDIRECTORY_OK=t\n-USAGE='<refname> <target directory>'\n-. \"$(git --exec-path)\"/git-sh-setup\n-cd_to_toplevel\n+# This requires git-manpages and/or git-htmldocs repositories\n \n-test -z \"$mandir\" && usage\n-if ! git rev-parse --verify \"$head^0\" >/dev/null; then\n-\techo >&2 \"head: $head does not exist in the current repository\"\n-\tusage\n+repository=${1?repository}\n+destdir=${2?destination}\n+\n+head=master GIT_DIR=\n+for d in \"$repository/.git\" \"$repository\"\n+do\n+\tif GIT_DIR=\"$d\" git rev-parse refs/heads/master >/dev/null 2>&1\n+\tthen\n+\t\tGIT_DIR=\"$d\"\n+\t\texport GIT_DIR\n+\t\tbreak\n+\tfi\n+done\n+\n+if test -z \"$GIT_DIR\"\n+then\n+\techo >&2 \"Neither $repository nor $repository/.git is a repository\"\n+\texit 1\n fi\n \n-GIT_INDEX_FILE=`pwd`/.quick-doc.index\n-export GIT_INDEX_FILE\n+GIT_WORK_TREE=$(pwd)\n+GIT_INDEX_FILE=$(pwd)/.quick-doc.$$\n+export GIT_INDEX_FILE GIT_WORK_TREE\n rm -f \"$GIT_INDEX_FILE\"\n trap 'rm -f \"$GIT_INDEX_FILE\"' 0\n \n git read-tree $head\n git checkout-index -a -f --prefix=\"$mandir\"/\n \n-if test -n \"$GZ\"; then\n+if test -n \"$GZ\"\n+then\n \tgit ls-tree -r --name-only $head |\n \txargs printf \"$mandir/%s\\n\" |\n \txargs gzip -f\ndiff --git a/INSTALL b/INSTALL\nindex bbb9d4d..bf0d97e 100644\n--- a/INSTALL\n+++ b/INSTALL\n@@ -139,34 +139,11 @@ Issues of note:\n    uses some compatibility wrappers to work on AsciiDoc 8. If you have\n    AsciiDoc 7, try \"make ASCIIDOC7=YesPlease\".\n \n-   Alternatively, pre-formatted documentation is available in\n-   \"html\" and \"man\" branches of the git repository itself.  For\n-   example, you could:\n-\n-\t$ mkdir manual && cd manual\n-\t$ git init\n-\t$ git fetch-pack git://git.kernel.org/pub/scm/git/git.git man html |\n-\t  while read a b\n-\t  do\n-\t    echo $a >.git/$b\n-\t  done\n-\t$ cp .git/refs/heads/man .git/refs/heads/master\n-\t$ git checkout\n-\n-   to checkout the pre-built man pages.  Also in this repository:\n-\n-\t$ git checkout html\n-\n-   would instead give you a copy of what you see at:\n-\n-\thttp://www.kernel.org/pub/software/scm/git/docs/\n-\n    There are also \"make quick-install-doc\", \"make quick-install-man\"\n    and \"make quick-install-html\" which install preformatted man pages\n-   and html documentation.\n-   This does not require asciidoc/xmlto, but it only works from within\n-   a cloned checkout of git.git with these two extra branches, and will\n-   not work for the maintainer for obvious chicken-and-egg reasons.\n+   and html documentation. To use these build targets, you need to\n+   clone two separate git-htmldocs and git-manpages repositories next\n+   to the clone of git itself.\n \n    It has been reported that docbook-xsl version 1.72 and 1.73 are\n    buggy; 1.72 misformats manual pages for callouts, and 1.73 needs\n"},{"id":"179160","messageId":"loom.20111108T215341-107@post.gmane.org","threadId":"28862","inReplyTo":"7vr51ixyuz.fsf_-_@alter.siamese.dyndns.org","subject":"Re: Update install-doc-quick (Re* What's cooking in git.git (Nov 2011, #02; Sun, 6))","fromName":"Stefan Naewe","fromEmail":"stefan.naewe@gmail.com","sentAt":"2011-11-08T20:59:30Z","receivedAt":"2011-11-08T20:59:30Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"Junio C Hamano <gitster <at> pobox.com> writes:\n\n> \n> Junio C Hamano <gitster <at> pobox.com> writes:\n> \n> > Stefan Näwe <stefan.naewe <at> atlas-elektronik.com> writes:\n> >\n> >> This breaks the 'quick-install-{doc,html,man}' make targets, btw.\n> >\n> > Thanks. As the \"push into kernel.org auto-rebuilds these branches\"\n> > infrastructure is no longer available, I think we should remove these\n> > targets and description of them in the INSTALL file in the meantime.\n> >\n> > Anybody care to do a big removal patch?\n> \n> Alternatively, we could keep it alive if people really want it, like this.\n\nYes!\n \n> Stefan, care to apply it on top of 'maint' and try it out?\n\n(That was a little harder than I thought, because the patch got garbled\nwhen I added '/raw' to the URL in gmane. Had to use a news reader to\nget an 'applyable' version).\n \n> \n>  git read-tree $head\n>  git checkout-index -a -f --prefix=\"$mandir\"/\n\n-git checkout-index -a -f --prefix=\"$mandir\"/\n+git checkout-index -a -f --prefix=\"$destdir\"/\n\n> -if test -n \"$GZ\"; then\n> +if test -n \"$GZ\"\n> +then\n>  \tgit ls-tree -r --name-only $head |\n>  \txargs printf \"$mandir/%s\\n\" |\n\n-       xargs printf \"$mandir/%s\\n\" |\n+       xargs printf \"$destdir/%s\\n\" |\n\n\nWorks for me.\n\nThanks,\n  Stefan\n"},{"id":"179163","messageId":"7vbosmxpqh.fsf@alter.siamese.dyndns.org","threadId":"28862","inReplyTo":"loom.20111108T215341-107@post.gmane.org","subject":"Re: Update install-doc-quick (Re* What's cooking in git.git (Nov 2011, #02; Sun, 6))","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-08T21:34:46Z","receivedAt":"2011-11-08T21:34:46Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thanks.\n\n-- >8 --\nSubject: [PATCH] docs: Update install-doc-quick\n\nThe preformatted documentation pages live in their own repositories\nthese days. Adjust the installation procedure to the updated layout.\n\nTested-by: Stefan Naewe <stefan.naewe@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n Documentation/Makefile             |   23 ++++++++++++++-----\n Documentation/install-doc-quick.sh |   44 +++++++++++++++++++++--------------\n INSTALL                            |   29 ++---------------------\n 3 files changed, 46 insertions(+), 50 deletions(-)\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 6346a75..5a340fd 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -46,8 +46,8 @@ MANPAGE_XSL = manpage-normal.xsl\n XMLTO_EXTRA =\n INSTALL?=install\n RM ?= rm -f\n-DOC_REF = origin/man\n-HTML_REF = origin/html\n+MAN_REPO = ../../git-manpages\n+HTML_REPO = ../../git-htmldocs\n \n infodir?=$(prefix)/share/info\n MAKEINFO=makeinfo\n@@ -327,12 +327,23 @@ $(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt\n install-webdoc : html\n \t'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)\n \n+# You must have a clone of git-htmldocs and git-manpages repositories\n+# next to the git repository itself for the following to work.\n+\n quick-install: quick-install-man\n \n-quick-install-man:\n-\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir)\n+require-manrepo::\n+\t@if test ! -d $(MAN_REPO); \\\n+\tthen echo \"git-manpages repository must exist at $(MAN_REPO)\"; exit 1; fi\n+\n+quick-install-man: require-manrepo\n+\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir)\n+\n+require-htmlrepo::\n+\t@if test ! -d $(HTML_REPO); \\\n+\tthen echo \"git-htmldocs repository must exist at $(HTML_REPO)\"; exit 1; fi\n \n-quick-install-html:\n-\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)\n+quick-install-html: require-htmlrepo\n+\t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir)\n \n .PHONY: FORCE\ndiff --git a/Documentation/install-doc-quick.sh b/Documentation/install-doc-quick.sh\nindex 35f4408..327f69b 100755\n--- a/Documentation/install-doc-quick.sh\n+++ b/Documentation/install-doc-quick.sh\n@@ -1,31 +1,39 @@\n #!/bin/sh\n-# This requires a branch named in $head\n-# (usually 'man' or 'html', provided by the git.git repository)\n-set -e\n-head=\"$1\"\n-mandir=\"$2\"\n-SUBDIRECTORY_OK=t\n-USAGE='<refname> <target directory>'\n-. \"$(git --exec-path)\"/git-sh-setup\n-cd_to_toplevel\n+# This requires git-manpages and/or git-htmldocs repositories\n \n-test -z \"$mandir\" && usage\n-if ! git rev-parse --verify \"$head^0\" >/dev/null; then\n-\techo >&2 \"head: $head does not exist in the current repository\"\n-\tusage\n+repository=${1?repository}\n+destdir=${2?destination}\n+\n+head=master GIT_DIR=\n+for d in \"$repository/.git\" \"$repository\"\n+do\n+\tif GIT_DIR=\"$d\" git rev-parse refs/heads/master >/dev/null 2>&1\n+\tthen\n+\t\tGIT_DIR=\"$d\"\n+\t\texport GIT_DIR\n+\t\tbreak\n+\tfi\n+done\n+\n+if test -z \"$GIT_DIR\"\n+then\n+\techo >&2 \"Neither $repository nor $repository/.git is a repository\"\n+\texit 1\n fi\n \n-GIT_INDEX_FILE=`pwd`/.quick-doc.index\n-export GIT_INDEX_FILE\n+GIT_WORK_TREE=$(pwd)\n+GIT_INDEX_FILE=$(pwd)/.quick-doc.$$\n+export GIT_INDEX_FILE GIT_WORK_TREE\n rm -f \"$GIT_INDEX_FILE\"\n trap 'rm -f \"$GIT_INDEX_FILE\"' 0\n \n git read-tree $head\n-git checkout-index -a -f --prefix=\"$mandir\"/\n+git checkout-index -a -f --prefix=\"$destdir\"/\n \n-if test -n \"$GZ\"; then\n+if test -n \"$GZ\"\n+then\n \tgit ls-tree -r --name-only $head |\n-\txargs printf \"$mandir/%s\\n\" |\n+\txargs printf \"$destdir/%s\\n\" |\n \txargs gzip -f\n fi\n rm -f \"$GIT_INDEX_FILE\"\ndiff --git a/INSTALL b/INSTALL\nindex bbb9d4d..bf0d97e 100644\n--- a/INSTALL\n+++ b/INSTALL\n@@ -139,34 +139,11 @@ Issues of note:\n    uses some compatibility wrappers to work on AsciiDoc 8. If you have\n    AsciiDoc 7, try \"make ASCIIDOC7=YesPlease\".\n \n-   Alternatively, pre-formatted documentation is available in\n-   \"html\" and \"man\" branches of the git repository itself.  For\n-   example, you could:\n-\n-\t$ mkdir manual && cd manual\n-\t$ git init\n-\t$ git fetch-pack git://git.kernel.org/pub/scm/git/git.git man html |\n-\t  while read a b\n-\t  do\n-\t    echo $a >.git/$b\n-\t  done\n-\t$ cp .git/refs/heads/man .git/refs/heads/master\n-\t$ git checkout\n-\n-   to checkout the pre-built man pages.  Also in this repository:\n-\n-\t$ git checkout html\n-\n-   would instead give you a copy of what you see at:\n-\n-\thttp://www.kernel.org/pub/software/scm/git/docs/\n-\n    There are also \"make quick-install-doc\", \"make quick-install-man\"\n    and \"make quick-install-html\" which install preformatted man pages\n-   and html documentation.\n-   This does not require asciidoc/xmlto, but it only works from within\n-   a cloned checkout of git.git with these two extra branches, and will\n-   not work for the maintainer for obvious chicken-and-egg reasons.\n+   and html documentation. To use these build targets, you need to\n+   clone two separate git-htmldocs and git-manpages repositories next\n+   to the clone of git itself.\n \n    It has been reported that docbook-xsl version 1.72 and 1.73 are\n    buggy; 1.72 misformats manual pages for callouts, and 1.73 needs\n-- \n1.7.8.rc1.82.g90e080\n"}]}