<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/contrib/subtree, branch v2.26.1</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.26.1</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.26.1'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2019-03-12T08:38:03Z</updated>
<entry>
<title>contrib/subtree: ensure only one rev is provided</title>
<updated>2019-03-12T08:38:03Z</updated>
<author>
<name>Denton Liu</name>
<email>liu.denton@gmail.com</email>
</author>
<published>2019-03-11T09:47:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=77128ed90e9a24182e6606548e627753d8f034e1'/>
<id>urn:sha1:77128ed90e9a24182e6606548e627753d8f034e1</id>
<content type='text'>
While looking at the inline help for git-subtree.sh, I noticed that

	git subtree split --prefix=&lt;prefix&gt; &lt;commit...&gt;

was given as an option. However, it only really makes sense to provide
one revision because of the way the commits are forwarded to rev-parse
so change "&lt;commit...&gt;" to "&lt;commit&gt;" to reflect this. In addition,
check the arguments to ensure that only one rev is provided for all
subcommands that accept a commit.

Signed-off-by: Denton Liu &lt;liu.denton@gmail.com&gt;
Acked-by: Avery Pennarun &lt;apenwarr@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ch/subtree-build'</title>
<updated>2018-10-30T06:43:40Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-30T06:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=42a165c90fad01e2bc49579743bf58cb92534770'/>
<id>urn:sha1:42a165c90fad01e2bc49579743bf58cb92534770</id>
<content type='text'>
Build update for "git subtree" (in contrib/) documentation pages.

* ch/subtree-build:
  Revert "subtree: make install targets depend on build targets"
  subtree: make install targets depend on build targets
  subtree: add build targets 'man' and 'html'
</content>
</entry>
<entry>
<title>Revert "subtree: make install targets depend on build targets"</title>
<updated>2018-10-18T02:07:17Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-18T02:07:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0df8e6d5a534f2e1d445dd6d5101fe1fd5f9bded'/>
<id>urn:sha1:0df8e6d5a534f2e1d445dd6d5101fe1fd5f9bded</id>
<content type='text'>
This reverts commit 744f7c4c314dc0e7816ac05520e8358c8318187a.

These targets do depend on the fact that each prereq is explicitly
listed via their use of $^, which I failed to notice, and broke the
build.
</content>
</entry>
<entry>
<title>subtree: make install targets depend on build targets</title>
<updated>2018-10-16T08:00:42Z</updated>
<author>
<name>Christian Hesse</name>
<email>mail@eworm.de</email>
</author>
<published>2018-10-16T07:56:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=744f7c4c314dc0e7816ac05520e8358c8318187a'/>
<id>urn:sha1:744f7c4c314dc0e7816ac05520e8358c8318187a</id>
<content type='text'>
Now that we have build targets let the install targets depend on them.
Also make the targets phony.

Signed-off-by: Christian Hesse &lt;mail@eworm.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: performance improvement for finding unexpected parent commits</title>
<updated>2018-10-12T14:28:32Z</updated>
<author>
<name>Roger Strain</name>
<email>rstrain@swri.org</email>
</author>
<published>2018-10-12T13:52:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=19ad68d95d6f8104eca1e86f8d1dfae50c7fb268'/>
<id>urn:sha1:19ad68d95d6f8104eca1e86f8d1dfae50c7fb268</id>
<content type='text'>
After testing a previous patch at larger scale, a performance issue was
detected when using git show to locate parent revisions, with a single
run of the git show command taking 2 seconds or longer in a complex repo.
When the command is required tens or hundreds of times in a run of the
script, the additional wait time is unaccepatable. Replacing the command
with git rev-parse resulted in significantly increased performance, with
the command in question returning instantly.

Signed-off-by: Roger Strain &lt;rstrain@swri.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: add build targets 'man' and 'html'</title>
<updated>2018-10-10T02:21:47Z</updated>
<author>
<name>Christian Hesse</name>
<email>mail@eworm.de</email>
</author>
<published>2018-10-07T07:30:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0f952b265990e76444f09e2d5ff816e9b001082f'/>
<id>urn:sha1:0f952b265990e76444f09e2d5ff816e9b001082f</id>
<content type='text'>
We have targets 'install-man' and 'install-html', let's add build
targets as well.

Signed-off-by: Christian Hesse &lt;mail@eworm.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: improve decision on merges kept in split</title>
<updated>2018-10-06T23:09:34Z</updated>
<author>
<name>Strain, Roger L</name>
<email>roger.strain@swri.org</email>
</author>
<published>2018-09-28T18:35:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=68f8ff81513fb3599ef3dfc3dd11da36d868e91b'/>
<id>urn:sha1:68f8ff81513fb3599ef3dfc3dd11da36d868e91b</id>
<content type='text'>
When multiple identical parents are detected for a commit being considered
for copying, explicitly check whether one is the common merge base between
the commits. If so, the other commit can be used as the identical parent;
if not, a merge must be performed to maintain history.

In some situations two parents of a merge commit may appear to both have
identical subtree content with each other and the current commit. However,
those parents can potentially come from different commit graphs.

Previous behavior would simply select one of the identical parents to
serve as the replacement for this commit, based on the order in which they
were processed.

New behavior compares the merge base between the commits to determine if
a new merge commit is necessary to maintain history despite the identical
content.

Signed-off-by: Strain, Roger L &lt;roger.strain@swri.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: use commits before rejoins for splits</title>
<updated>2018-10-06T23:09:34Z</updated>
<author>
<name>Strain, Roger L</name>
<email>roger.strain@swri.org</email>
</author>
<published>2018-09-28T18:35:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=315a84f9aa0e2e629b0680068646b0032518ebed'/>
<id>urn:sha1:315a84f9aa0e2e629b0680068646b0032518ebed</id>
<content type='text'>
Adds recursive evaluation of parent commits which were not part of the
initial commit list when performing a split.

Split expects all relevant commits to be reachable from the target commit
but not reachable from any previous rejoins. However, a branch could be
based on a commit prior to a rejoin, then later merged back into the
current code. In this case, a parent to the commit will not be present in
the initial list of commits, trigging an "incorrect order" warning.

Previous behavior was to consider that commit to have no parent, creating
an original commit containing all subtree content. This commit is not
present in an existing subtree commit graph, changing commit hashes and
making pushing to a subtree repo impossible.

New behavior will recursively check these unexpected parent commits to
track them back to either an earlier rejoin, or a true original commit.
The generated synthetic commits will properly match previously-generated
commits, allowing successful pushing to a prior subtree repo.

Signed-off-by: Strain, Roger L &lt;roger.strain@swri.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: make --ignore-joins pay attention to adds</title>
<updated>2018-10-06T23:09:34Z</updated>
<author>
<name>Strain, Roger L</name>
<email>roger.strain@swri.org</email>
</author>
<published>2018-09-28T18:35:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=dd21d43b58ee3ce1b9801b5121fead0298961be1'/>
<id>urn:sha1:dd21d43b58ee3ce1b9801b5121fead0298961be1</id>
<content type='text'>
Changes the behavior of --ignore-joins to always consider a subtree add
commit, and ignore only splits and squashes.

The --ignore-joins option is documented to ignore prior --rejoin commits.
However, it additionally ignored subtree add commits generated when a
subtree was initially added to a repo.

Due to the logic which determines whether a commit is a mainline commit
or a subtree commit (namely, the presence or absence of content in the
subtree prefix) this causes commits before the initial add to appear to
be part of the subtree. An --ignore-joins split would therefore consider
those commits part of the subtree history and include them at the
beginning of the synthetic history, causing the resulting hashes to be
incorrect for all later commits.

Signed-off-by: Strain, Roger L &lt;roger.strain@swri.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>subtree: refactor split of a commit into standalone method</title>
<updated>2018-10-06T23:09:34Z</updated>
<author>
<name>Strain, Roger L</name>
<email>roger.strain@swri.org</email>
</author>
<published>2018-09-28T18:35:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=565e4b79816c1618161a5bd647982aa0daff81c4'/>
<id>urn:sha1:565e4b79816c1618161a5bd647982aa0daff81c4</id>
<content type='text'>
In a particularly complex repo, subtree split was not creating
compatible splits for pushing back to a separate repo. Addressing
one of the issues requires recursive handling of parent commits
that were not initially considered by the algorithm. This commit
makes no functional changes, but relocates the code to be called
recursively into a new method to simply comparisons of later
commits.

Signed-off-by: Strain, Roger L &lt;roger.strain@swri.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
