git/builtin
Stefan Beller d22eb04475 clone: add `--shallow-submodules` flag
When creating a shallow clone of a repository with submodules, the depth
argument does not influence the submodules, i.e. the submodules are done
as non-shallow clones. It is unclear what the best default is for the
depth of submodules of a shallow clone, so we need to have the possibility
to do all kinds of combinations:

* shallow super project with shallow submodules
  e.g. build bots starting always from scratch. They want to transmit
  the least amount of network data as well as using the least amount
  of space on their hard drive.
* shallow super project with unshallow submodules
  e.g. The superproject is just there to track a collection of repositories
  and it is not important to have the relationship between the repositories
  intact. However the history of the individual submodules matter.
* unshallow super project with shallow submodules
  e.g. The superproject is the actual project and the submodule is a
  library which is rarely touched.

The new switch to select submodules to be shallow or unshallow supports
all of these three cases.

It is easy to transition from the first to the second case by just
unshallowing the submodules (`git submodule foreach git fetch
--unshallow`), but it is not possible to transition from the second to the
first case (as we would have already transmitted the non shallow over
the network). That is why we want to make the first case the default in
case of a shallow super project. This leads to the inconvenience in the
second case with the shallow super project and unshallow submodules,
as you need to pass `--no-shallow-submodules`.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-04-26 10:43:11 -07:00
..
add.c Merge branch 'jc/add-u-A-default-to-top' into maint 2015-11-05 12:18:12 -08:00
am.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
annotate.c
apply.c apply: convert root string to strbuf 2015-10-05 11:08:04 -07:00
archive.c
bisect--helper.c
blame.c Merge branch 'bc/object-id' 2015-12-10 12:36:13 -08:00
branch.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
bundle.c
cat-file.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
check-attr.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
check-ignore.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
check-mailmap.c
check-ref-format.c
checkout-index.c
checkout.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
clean.c use strbuf_complete to conditionally append slash 2015-10-05 11:08:06 -07:00
clone.c clone: add `--shallow-submodules` flag 2016-04-26 10:43:11 -07:00
column.c
commit-tree.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
commit.c Merge branch 'bc/object-id' 2015-12-10 12:36:13 -08:00
config.c config: use xstrfmt in normalize_value 2015-09-25 10:18:18 -07:00
count-objects.c
credential.c
describe.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
diff-files.c
diff-index.c
diff-tree.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
diff.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
fast-export.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
fetch-pack.c add_sought_entry_mem: convert to struct object_id 2015-11-20 08:02:05 -05:00
fetch.c fetching submodules: respect `submodule.fetchJobs` config option 2016-03-01 11:57:18 -08:00
fmt-merge-msg.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
for-each-ref.c ref-filter: add option to match literal pattern 2015-09-17 10:02:49 -07:00
fsck.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
gc.c Merge branch 'dk/gc-idx-wo-pack' 2015-11-20 06:55:34 -05:00
get-tar-commit-id.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
grep.c Merge branch 'bc/object-id' 2015-12-10 12:36:13 -08:00
hash-object.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
help.c convert strncpy to memcpy 2015-10-05 11:08:06 -07:00
index-pack.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
init-db.c initdb: make safe_create_dir public 2015-11-20 04:52:01 -05:00
interpret-trailers.c
log.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
ls-files.c
ls-remote.c Convert struct ref to use object_id. 2015-11-20 08:02:05 -05:00
ls-tree.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
mailinfo.c mailinfo: libify 2015-10-21 15:59:34 -07:00
mailsplit.c mailsplit: make PATH_MAX buffers dynamic 2015-09-25 10:18:18 -07:00
merge-base.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
merge-file.c Merge branch 'jk/merge-file-exit-code' into maint 2015-11-03 15:32:41 -08:00
merge-index.c use sha1_to_hex_r() instead of strcpy 2015-10-05 11:08:05 -07:00
merge-ours.c
merge-recursive.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
merge-tree.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
merge.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
mktag.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
mktree.c
mv.c
name-rev.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
notes.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
pack-objects.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
pack-redundant.c
pack-refs.c
patch-id.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
prune-packed.c
prune.c Merge branch 'jk/repository-extension' into maint 2015-11-03 15:32:25 -08:00
pull.c submodules: allow parallel fetching, add tests and documentation 2015-12-16 12:06:08 -08:00
push.c
read-tree.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
receive-pack.c Convert struct ref to use object_id. 2015-11-20 08:02:05 -05:00
reflog.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
remote-ext.c remote-ext: simplify git pkt-line generation 2015-09-25 10:18:18 -07:00
remote-fd.c
remote.c ref_newer: convert to use struct object_id 2015-11-20 08:02:05 -05:00
repack.c Merge branch 'jk/repository-extension' into maint 2015-11-03 15:32:25 -08:00
replace.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
rerere.c Sync with 2.6.1 2015-10-05 13:20:08 -07:00
reset.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
rev-list.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
rev-parse.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
revert.c
rm.c
send-pack.c
shortlog.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
show-branch.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
show-ref.c show-ref: stop using PARSE_OPT_NO_INTERNAL_HELP 2015-11-20 08:02:07 -05:00
stripspace.c Merge branch 'jc/usage-stdin' into maint 2015-11-03 15:32:38 -08:00
submodule--helper.c submodule update: expose parallelism to the user 2016-03-01 11:57:20 -08:00
symbolic-ref.c
tag.c Merge branch 'kn/for-each-tag' 2015-10-26 15:55:22 -07:00
unpack-file.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
unpack-objects.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
update-index.c
update-ref.c
update-server-info.c
upload-archive.c upload-archive: convert sprintf to strbuf 2015-09-25 10:18:18 -07:00
var.c
verify-commit.c
verify-pack.c
verify-tag.c
worktree.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
write-tree.c