On Fri, Mar 7, 2014 at 9:48 PM, Nguyễn Thái Ngọc Duy <pclo...@gmail.com> 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 <pclo...@gmail.com>
> 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
> + * 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'"),
> 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 majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html