Re: [PATCH v3 2/5] Teach mv to move submodules using a gitfile
- From
Fredrik Gustafsson <iveqy@iveqy.com>
- Date
- Jul 31, 2013, 09:43 UTC
- Message-ID
- <20130731094314.GD19369@paksenarrion.iveqy.com>
- In-Reply-To
- <51F818EB.8010101@web.de>
On Tue, Jul 30, 2013 at 09:50:03PM +0200, Jens Lehmann wrote:
Show 30 quoted lines
> +/* Update gitfile and core.worktree setting to connect work tree and git dir */
> +void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)
> +{
> + struct strbuf file_name = STRBUF_INIT;
> + struct strbuf rel_path = STRBUF_INIT;
> + const char *real_work_tree = xstrdup(real_path(work_tree));
> + FILE *fp;
> +
> + /* Update gitfile */
> + strbuf_addf(&file_name, "%s/.git", work_tree);
> + fp = fopen(file_name.buf, "w");
> + if (!fp)
> + die(_("Could not create git link %s"), file_name.buf);
> + fprintf(fp, "gitdir: %s\n", relative_path(git_dir, real_work_tree,
> + &rel_path));
> + fclose(fp);
> +
> + /* Update core.worktree setting */
> + strbuf_reset(&file_name);
> + strbuf_addf(&file_name, "%s/config", git_dir);
> + if (git_config_set_in_file(file_name.buf, "core.worktree",
> + relative_path(real_work_tree, git_dir,
> + &rel_path)))
> + die(_("Could not set core.worktree in %s"),
> + file_name.buf);
> +
> + strbuf_release(&file_name);
> + strbuf_release(&rel_path);
> + free((void *)real_work_tree);
> +}Would it make sense to return an int here and do the dying in builtin/mv.c instead? Again thinking of "libgit" and the die_errno for non-submodule errors are in mv.c and not in rename().
If that's the case the same applies for stage_updated_gitmodules() and update_path_in_gitmodules().
update_path_in_gitmodules() also needs a strbuf_release() if you haven't already found it.
-- Med vänliga hälsningar Fredrik Gustafsson tel: 0733-608274 e-post: iveqy@iveqy.com