Git development
 help / color / mirror / Atom feed
* Okay to invoke merge-recursive with an empty workdir?
@ 2011-09-13  3:13 Jay Soffian
  2011-09-13  3:29 ` Jeff King
  0 siblings, 1 reply; 4+ messages in thread
From: Jay Soffian @ 2011-09-13  3:13 UTC (permalink / raw)
  To: git, Jeff King

I have an unattended script which performs automated merges into
several destination branches.

As the repo is fairly large, I'd like not to have to checkout each
destination branch, nor have multiple workdirs.

So my approach is to create a temporary, empty, workdir, using
symlinks to point to the parent repo per git new-workdir.

I then invoke merge-recursive directly inside the temporary workdir.

The question is whether this is safe to do, or whether merge-recursive
expects a fully populated working tree that matches the index. My easy
test cases seem to work correctly, but I'm concerned that I sometimes
get:

Skipped /some/file (merged same as existing)
error: addinfo_cache failed for path '/some/file'
Skipped some/other_file (merged same as existing)
error: addinfo_cache failed for path 'some/other_file'

Which seems to be from this code in merge-recursive.cc:

	if (mfi.clean && !df_conflict_remains &&
	    sha_eq(mfi.sha, a_sha) && mfi.mode == a_mode) {
		int path_renamed_outside_HEAD;
		output(o, 3, "Skipped %s (merged same as existing)", path);
		/*
		 * The content merge resulted in the same file contents we
		 * already had.  We can return early if those file contents
		 * are recorded at the correct path (which may not be true
		 * if the merge involves a rename).
		 */
		path_renamed_outside_HEAD = !path2 || !strcmp(path, path2);
		if (!path_renamed_outside_HEAD) {
			add_cacheinfo(mfi.mode, mfi.sha, path,
				      0 /*stage*/, 1 /*refresh*/, 0 /*options*/);
			return mfi.clean;
		}

(Peff, hope you don't mind me cc'ing you directly. I seem to recall
you're saying github is doing something like this but I couldn't find
that email.)

j.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-09-13  3:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-13  3:13 Okay to invoke merge-recursive with an empty workdir? Jay Soffian
2011-09-13  3:29 ` Jeff King
2011-09-13  3:55   ` Junio C Hamano
2011-09-13  3:59     ` Jeff King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox