On Fri, Mar 7, 2014 at 9:48 PM, Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> wrote: > (alias R=$GIT_COMMON_DIR/repos/<id>) > > - linked checkouts are supposed to keep its location in $R/gitdir up > to date. The use case is auto fixup after a manual checkout move. > > - linked checkouts are supposed to update mtime of $R/gitdir. If > $R/gitdir's mtime is older than a limit, and it points to nowhere, > repos/<id> is to be pruned. > > - If $R/locked exists, repos/<id> is not supposed to be pruned. If > $R/locked exists and $R/gitdir's mtime is older than a really long > limit, warn about old unused repo. > > - "git checkout --to" is supposed to make a hard link named $R/link > pointing to the .git file on supported file systems to help detect > the user manually deleting the checkout. If $R/link exists and its > link count is greated than 1, the repo is kept. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- > diff --git a/builtin/checkout.c b/builtin/checkout.c > index 598b43d..9dc80f1 100644 > --- a/builtin/checkout.c > +++ b/builtin/checkout.c > @@ -899,12 +899,22 @@ static int prepare_linked_checkout(const struct checkout_opts *opts, > junk_git_dir = sb_repo.buf; > is_junk = 1; > > + /* > + * lock the incomplete repo so prunt won't delete it, unlock s/prunt/prune/ > + * after the preparation is over. > + */ > + strbuf_addf(&sb, "%s/locked", sb_repo.buf); > + write_file(sb.buf, 1, "initializing\n"); > + > strbuf_addf(&sb_git, "%s/.git", path); > if (safe_create_leading_directories_const(sb_git.buf)) > die_errno(_("could not create leading directories of '%s'"), > sb_git.buf); > junk_work_tree = path; > > + strbuf_reset(&sb); > + strbuf_addf(&sb, "%s/gitdir", sb_repo.buf); > + write_file(sb.buf, 1, "%s\n", real_path(sb_git.buf)); > write_file(sb_git.buf, 1, "gitdir: %s/repos/%s\n", > real_path(get_git_common_dir()), name); > /* -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html