This is a rewrite of [1]. First of all the patch is split into several parts now. 1/3 prevents writing invalid commit objects (with null_sha1 parents) For 2/3 and 3/3 I've changed my mind almost completely. The commands in question are: A 'from null_sha1' B 'from empty_branch' C 'from itself' D 'merge null_sha1' E 'merge empty_branch' F 'merge itself' Currently C is disallowed, D and E lead to 1/3 bug, F looks broken, A and B are allowed. In [1] I kept A allowed, but made B, C, D, E disallowed and "fixed" F. The idea was too keep A as legacy, fix F as it may have applications and disallow others as they look like errors in import stream. This time I keep A and B allowed, allow D and E, disallow F. Now I think of null_sha1 as of a special feature, empty_branch things as a mix of legacy and this feature (one can 'reset' branch to null_sha1, then use it's name and expect it to work as if null_sha1 was used, and null_sha1 is allowed). "Fix" for F is dropped for now and will later go separately with it's own set of tests and a new discussion I guess. [1] http://thread.gmane.org/gmane.comp.version-control.git/200339 Dmitry Ivankov (3): fast-import: do not write null_sha1 as a merge parent fast-import: allow "merge $null_sha1" command fast-import: disallow "merge $itself" command fast-import.c | 29 +++++++++++++++++++---------- t/t9300-fast-import.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) -- 1.7.3.4 -- 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