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 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.