From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org, Elijah Newren <newren@gmail.com>
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 00/17] Narrow clone v3 (was subtree clone)
Date: Sun, 5 Sep 2010 16:47:27 +1000 [thread overview]
Message-ID: <1283669264-15759-1-git-send-email-pclouds@gmail.com> (raw)
I'll describe differences between this series and Elijah's one [1].
I think it's more interesting. Changes from v2 [2] will follow later.
In short I think the two series are converging. The outstanding
difference is Elijah drops shallow clone in favor of more flexible
history cutting while I only focus on tree cutting.
Two other differences are tree traversal and tree generating. I admit
that changing traverse_trees() the way Elijah does is more flexible
and is probably the only way to support negative pathspec. And I think
his sparse clone supports even cloning a single file. Mine does not
support that. I'm going to steal some of his patches at some point.
Tree generating from index, Elijah merges the base tree inside
write_cache_as_tree() while it does it inside commit_tree(). Again the
principle is pretty much the same. I'll see if I can resist from
stealing some more :)
OK, changes from v2:
- Require en/object-list-with-pathspec
- Use lower-case index extension instead of stepping index version to 4
- Support cloning multiple tree
- Remote merge is dropped. It may be resurrected at some point if
people like to merge so much.
Things that won't work:
- fsck/prune/...
- Shell scripts that use "git write-tree"
What's next:
- stealing
- fsck (will probably make fsck use rev-list in narrow repo)
- only send commits that have changes in narrow area and graft it at
client side
[1] http://mid.gmane.org/1283645647-1891-1-git-send-email-newren@gmail.com
[2] http://mid.gmane.org/1282688422-7738-1-git-send-email-pclouds@gmail.com
Nguyễn Thái Ngọc Duy (17):
rev-list: do not do commit simplification if simplify_history = 0
tree.c: add path_to_sha1()
Introduce $GIT_DIR/narrow
index: make narrow index incompatible with older git
pack-objects: support narrow packs with pathspecs
{fetch,upload}-pack: support narrow repository
unpack-trees: split traverse_trees() code into a separate function
unpack-trees: support unpack trees in narrow repository
cache-tree: only cache tree within narrow area
get_pathspec(): support narrow pathspec rewriting
pathspec retrieval fix
clone: support --narrow option
commit: add narrow's commit_tree version
commit: use commit_narrow_tree() to support narrow repo
write-tree: requires --narrow-base in narrow repository
merge: try to do local merge if possible in narrow repo
Add narrow clone demonstration test
.gitignore | 1 +
Documentation/git-clone.txt | 14 ++-
Documentation/git-fetch-pack.txt | 3 +
Documentation/git-merge.txt | 16 ++
Documentation/git-pack-objects.txt | 2 +-
Documentation/git-rev-parse.txt | 3 +
Documentation/gitrepository-layout.txt | 5 +
Documentation/technical/pack-protocol.txt | 3 +
Makefile | 3 +
builtin/clone.c | 43 +++++
builtin/commit.c | 16 +-
builtin/fetch-pack.c | 9 +
builtin/grep.c | 5 +-
builtin/ls-files.c | 2 +-
builtin/ls-tree.c | 2 +-
builtin/merge.c | 60 ++++++-
builtin/pack-objects.c | 19 ++-
builtin/reset.c | 3 +-
builtin/rev-parse.c | 8 +
builtin/write-tree.c | 25 +++
cache-tree.c | 41 ++++-
cache.h | 5 +
commit.c | 16 ++
commit.h | 5 +
environment.c | 2 +
git-am.sh | 2 +-
narrow-tree.c | 285 +++++++++++++++++++++++++++++
narrow-tree.h | 8 +
read-cache.c | 32 +++-
revision.c | 7 +-
setup.c | 172 +++++++++++++++++-
t/t0062-narrow-pathspec.sh | 150 +++++++++++++++
t/t0063-narrow-repo.sh | 74 ++++++++
t/t1013-read-tree-narrow.sh | 72 ++++++++
t/t6000-rev-list-misc.sh | 9 +
t/t7510-commit-narrow.sh | 30 +++
t/t9999-narrow.sh | 87 +++++++++
test-get-pathspec.c | 17 ++
tree.c | 35 ++++
tree.h | 2 +
unpack-trees.c | 153 +++++++++++++---
upload-pack.c | 39 ++++-
42 files changed, 1420 insertions(+), 65 deletions(-)
create mode 100644 narrow-tree.c
create mode 100644 narrow-tree.h
create mode 100755 t/t0062-narrow-pathspec.sh
create mode 100755 t/t0063-narrow-repo.sh
create mode 100755 t/t1013-read-tree-narrow.sh
create mode 100755 t/t7510-commit-narrow.sh
create mode 100755 t/t9999-narrow.sh
create mode 100644 test-get-pathspec.c
next reply other threads:[~2010-09-05 6:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-05 6:47 Nguyễn Thái Ngọc Duy [this message]
2010-09-05 6:47 ` [PATCH 01/17] rev-list: do not do commit simplification if simplify_history = 0 Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 02/17] tree.c: add path_to_sha1() Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 03/17] Introduce $GIT_DIR/narrow Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 04/17] index: make narrow index incompatible with older git Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 05/17] pack-objects: support narrow packs with pathspecs Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 06/17] {fetch,upload}-pack: support narrow repository Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 07/17] unpack-trees: split traverse_trees() code into a separate function Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 08/17] unpack-trees: support unpack trees in narrow repository Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 09/17] cache-tree: only cache tree within narrow area Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 10/17] get_pathspec(): support narrow pathspec rewriting Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 11/17] pathspec retrieval fix Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 12/17] clone: support --narrow option Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 13/17] commit: add narrow's commit_tree version Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 14/17] commit: use commit_narrow_tree() to support narrow repo Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 15/17] write-tree: requires --narrow-base in narrow repository Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 16/17] merge: try to do local merge if possible in narrow repo Nguyễn Thái Ngọc Duy
2010-09-05 6:47 ` [PATCH 17/17] Add narrow clone demonstration test Nguyễn Thái Ngọc Duy
2010-09-05 6:55 ` [PATCH 00/17] Narrow clone v3 (was subtree clone) Sverre Rabbelier
2010-09-05 7:13 ` Nguyen Thai Ngoc Duy
2010-09-05 21:05 ` Elijah Newren
2010-09-06 5:17 ` Elijah Newren
2010-09-06 5:24 ` Nguyen Thai Ngoc Duy
2010-09-06 20:29 ` Sverre Rabbelier
2010-09-06 20:40 ` Elijah Newren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1283669264-15759-1-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=newren@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).