Re: [PATCH] Add --unannotate option to git-subtree
From: James Nylen <hidden>
Date: 2016-06-15 22:55:48
On Mon, Dec 31, 2012 at 8:15 PM, [off-list ref] wrote:
James Nylen [off-list ref] writes:quoted
Rather than adding a marker to each commit when splitting out the commits back to the subproject, --unannotate removes the specified string (or bash glob pattern) from the beginning of the first line of the commit message. This enables the following workflow:I applied the patch to my working copy but it doesn't seem to do what I'd expect. The test script does something like this: - create project A - add file to project A with message "subproj: add F1" - add file to project A with message "subproj: add F2" - add project A as a subtree of project B under directory subdir - add a file to subdir with message "subproj: add F3" - do a split --unannotate="subproj:" I expected to see a log with no mention of "subproj" anywhere. Instead I get: add F3 subproj: add F2 subproj: add F1 Is this as you intend? Is --unannotate only supposed to strip the string for commits added when A was a subtree of B? I guess this behavior makes sense in that the user would want to see the same commits that existed before A became a subproject. -David
Wow, I missed a bunch of emails on this. Thanks for applying and for writing tests! This is as intended. You wouldn't want subtree to modify commits that occurred in the full repository for project A. Furthermore, you wouldn't have a "subproj:" commit in project A's standalone repo since it wasn't a subproject at that time. The --annotate option confused me because it was the reverse of what I wanted. As in your example, a typical use would be 'add a file to subdir with message "subproj: add F3" ' to make it clear that you were committing to the "subproj" part of a larger repository. Then, when splitting back out to subproj's main repository, you'd want to remove the prefix.