From: Junio C Hamano Date: Mon, 22 Apr 2013 18:11:40 +0000 (-0700) Subject: Merge branch 'nd/checkout-keep-sparse' X-Git-Tag: v1.8.3-rc0~31 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/de0d774d46b3731ea22567efc4aaf1fc8f5ac919?ds=inline;hp=-c Merge branch 'nd/checkout-keep-sparse' Make the initial "sparse" selection of the paths more sticky across "git checkout". * nd/checkout-keep-sparse: checkout: add --ignore-skip-worktree-bits in sparse checkout mode --- de0d774d46b3731ea22567efc4aaf1fc8f5ac919 diff --combined Documentation/gitrepository-layout.txt index 2ad09f4baf,817337f575..d6f3393c5f --- a/Documentation/gitrepository-layout.txt +++ b/Documentation/gitrepository-layout.txt @@@ -106,7 -106,7 +106,7 @@@ refs/remotes/`name`: from a remote repository. refs/replace/``:: - records the SHA1 of the object that replaces ``. + records the SHA-1 of the object that replaces ``. This is similar to info/grafts and is internally used and maintained by linkgit:git-replace[1]. Such refs can be exchanged between repositories while grafts are not. @@@ -184,6 -184,10 +184,10 @@@ info/exclude: 'git clean' look at it but the core Git commands do not look at it. See also: linkgit:gitignore[5]. + info/sparse-checkout:: + This file stores sparse checkout patterns. + See also: linkgit:git-read-tree[1]. + remotes:: Stores shorthands for URL and default refnames for use when interacting with remote repositories via 'git fetch', diff --combined builtin/checkout.c index eb51872347,4ed1ee7e25..81b4419da5 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@@ -35,6 -35,7 +35,7 @@@ struct checkout_opts int force_detach; int writeout_stage; int overwrite_ignore; + int ignore_skipworktree; const char *new_branch; const char *new_branch_force; @@@ -278,6 -279,8 +279,8 @@@ static int checkout_paths(const struct for (pos = 0; pos < active_nr; pos++) { struct cache_entry *ce = active_cache[pos]; ce->ce_flags &= ~CE_MATCHED; + if (!opts->ignore_skipworktree && ce_skip_worktree(ce)) + continue; if (opts->source_tree && !(ce->ce_flags & CE_UPDATE)) /* * "git checkout tree-ish -- path", but this entry @@@ -729,7 -732,7 +732,7 @@@ static void suggest_reattach(struct com "If you want to keep them by creating a new branch, " "this may be a good time\nto do so with:\n\n" " git branch new_branch_name %s\n\n"), - sha1_to_hex(commit->object.sha1)); + find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV)); } /* @@@ -1058,6 -1061,8 +1061,8 @@@ int cmd_checkout(int argc, const char * OPT_STRING(0, "conflict", &conflict_style, N_("style"), N_("conflict style (merge or diff3)")), OPT_BOOLEAN('p', "patch", &opts.patch_mode, N_("select hunks interactively")), + OPT_BOOL(0, "ignore-skip-worktree-bits", &opts.ignore_skipworktree, + N_("do not limit pathspecs to sparse entries only")), { OPTION_BOOLEAN, 0, "guess", &dwim_new_local_branch, NULL, N_("second guess 'git checkout no-such-branch'"), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },