> Techlive Zheng <> writes:
>> "%s%n%n%b" is not always equal to "%B". If the commit msg does not have
>> a body, this will append an extra new-line character to the msg title
>> which would cause the splited commit has a new sha1 hash. In most cases,
>> this does not matter, but for a project which did not merged using this
>> script initially, the 'split' command would not genereate the same
>> commits as the orginal which may cause conflicts.
>> Signed-off-by: Techlive Zheng <>
>> ---
>>  contrib/subtree/ | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> diff --git a/contrib/subtree/ b/contrib/subtree/
>> index 920c664..5598210 100755
>> --- a/contrib/subtree/
>> +++ b/contrib/subtree/
>> @@ -296,7 +296,7 @@ copy_commit()
>>      # We're going to set some environment vars here, so
>>      # do it in a subshell to get rid of them safely later
>>      debug copy_commit "{$1}" "{$2}" "{$3}"
>> -    git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' 
>> "$1" |
>> +    git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%B' "$1" |
>>      (
>>              read GIT_AUTHOR_NAME
>>              read GIT_AUTHOR_EMAIL
> This looks good to me.  I assume this passes all the tests.  Can you add
> a test for this bug so we don't regress?  Junio, I am good with this
> patch as soon as we get a test for the problem.

I've applied this patch to my working copy but I'm not finding that I
can recreate the original problem when the patch is disabled.

I assumed the scenario you're trying to fix is:

- Make some commit C to project A with a one-line message
- work, commit, work...
- Add project A as a subproject
- work, commit, work...
- Split project A off into a separate repository

After this, commit C with the one-line message in the split-off projet
should have the same hash it had before project A was incorporated as a

As I understad it, you saw the post-split commit having a different

Is that right?  I am not seeing that problem even without your patch.

I want to make sure I understand what the problem is so I can test for


To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to