Patrick Steinhardt <ps@xxxxxx> writes: > It makes perfect sense to not single out git-ls-tree(1) anymore. But I > think we should help the reader a bit by continuing to point out which > commands can be used as input here. That can be either here in the > description, further down in the new "INPUT FORMAT" section, or in both > places. Here is a way to do so, which I alluded to earlier. The original text is too specific to "update-index" in that it talked about "stuffing them into the index", which does not apply in the context of "mktree". And then it made me realize that "ls-files -s" output has the stage information, which of course is needed for "update-index" to be able to recreate the index state from a textual dump, but "mktree" should reject if given a higher stage entry. It seems that the code after applying all these 16 patches does not diagnose it as an error if you feed a non-zero stage. The callback starts like so. static int mktree_line(unsigned int mode, struct object_id *oid, enum object_type obj_type, int stage UNUSED, const char *path, void *cbdata) { I _think_ it should be made an error if the input has non-zero stage, which would be a sign that it was taken from "ls-files -s" (or even "ls-files -u"), out of which "git write-tree" will REFUSE to create a tree object. "mktree" should behave the same way, no? In any case, here is the documentation split/refactor. Documentation/git-mktree.txt | 4 +++- Documentation/git-update-index.txt | 14 +------------- Documentation/index-info-formats.txt | 13 +++++++++++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git c/Documentation/git-mktree.txt w/Documentation/git-mktree.txt index a660438c67..fefaa83d29 100644 --- c/Documentation/git-mktree.txt +++ w/Documentation/git-mktree.txt @@ -48,7 +48,9 @@ OPTIONS INPUT FORMAT ------------ Tree entries may be specified in any of the formats compatible with the -`--index-info` option to linkgit:git-update-index[1]. +`--index-info` option to linkgit:git-update-index[1]. That is: + +include::index-info-formats.txt[] Entries may use full pathnames containing directory separators to specify entries nested within one or more directories. These entries are inserted into diff --git c/Documentation/git-update-index.txt w/Documentation/git-update-index.txt index 7128aed540..2287a5d4be 100644 --- c/Documentation/git-update-index.txt +++ w/Documentation/git-update-index.txt @@ -280,19 +280,7 @@ USING --INDEX-INFO multiple entry definitions from the standard input, and designed specifically for scripts. It can take inputs of three formats: - . mode SP type SP sha1 TAB path -+ -This format is to stuff `git ls-tree` output into the index. - - . mode SP sha1 SP stage TAB path -+ -This format is to put higher order stages into the -index file and matches 'git ls-files --stage' output. - - . mode SP sha1 TAB path -+ -This format is no longer produced by any Git command, but is -and will continue to be supported by `update-index --index-info`. +include::index-info-formats.txt[] To place a higher stage entry to the index, the path should first be removed by feeding a mode=0 entry for the path, and diff --git c/Documentation/index-info-formats.txt w/Documentation/index-info-formats.txt new file mode 100644 index 0000000000..037ebd2432 --- /dev/null +++ w/Documentation/index-info-formats.txt @@ -0,0 +1,13 @@ + . mode SP type SP sha1 TAB path ++ +This format is to use `git ls-tree` output. + + . mode SP sha1 SP stage TAB path ++ +This format allows higher order stages to appear and +matches 'git ls-files --stage' output. + + . mode SP sha1 TAB path ++ +This format is no longer produced by any Git command, but is +and will continue to be supported.