svn commit: r362681 - in head: contrib/bc contrib/bc/gen contrib/bc/include contrib/bc/locales contrib/bc/manuals contrib/bc/src contrib/bc/src/bc contrib/bc/src/dc contrib/bc/src/history contrib/b...

Stefan Eßer se at freebsd.org
Tue Jun 30 22:03:41 UTC 2020



Am 30.06.20 um 23:29 schrieb Dimitry Andric:
> On 30 Jun 2020, at 22:01, Stefan Eßer <se at FreeBSD.org> wrote:
>>
>> Am 29.06.20 um 20:09 schrieb Ed Maste:
>>> On Mon, 29 Jun 2020 at 11:27, John Baldwin <jhb at freebsd.org> wrote:
>>>>
>>>> I suspect just doing the 'merge --record-only' is the simplest method
>>>> assuming Git handles it ok.  I suspect since Git ignores mergeinfo this
>>>> is fine, but it would be good for Ed to confirm.  You can always restore
>>>> the tests in the future in contrib/bc when you want to add them.
>>>
>>> I think a --record-only merge is the best approach; in any case we
>>> have a number of these in the tree already and Git will have to deal
>>> with them.
>>
>> $ cd /usr/svn/base/head/contrib/bc
>>
>> $ svn merge --record-only ^/vendor/bc/dist
>> svn: E195016: 'svn+ssh://repo.freebsd.org/base/vendor/bc/dist@362810'
>> must be ancestrally related to
>> 'svn+ssh://repo.freebsd.org/base/head/contrib/bc@362810'
> 
> This is because you are supposed to commit stuff to ^/base/vendor/xxx
> first, then svn cp it to ^/head/contrib/xxx, at least from Subversion
> 1.8 onwards. The 'cp' action establishes the ancestral relation.

Yes, I thought so - the problem I want to fix is the premature import
to /contrib and I had been hoping that it was possible to use the
--record-only merge to edit the merge history (as suggested by John
Baldwin and Ed Maste).

> Some of our older contrib areas were imported using cvs2svn, and these
> also suffer the same problem, i.e. Subversion complains that the vendor
> and contrib areas are not ancestrally related.

I see.

>> Adding the option --ignore-ancestry to the merge command does not help.
> ...
>> Any idea how to merge from the vendor area in this situation?
> 
> As far as I know, you have these alternatives:
> 
> * Delete the contrib/bc tree, and do a fresh svn cp from the vendor
>   area. You will have to apply any customizations on top again. I did
>   something like this to fixup contrib/libc++ in
>   https://svnweb.freebsd.org/base?view=revision&revision=287679

Yes, I could delete the files in contrib/bc and then immediately
svn copy over the contents of vendor/bc/dist - and I guess that is
the only real "clean" way forward.

> * Figure out the right value of the svn:mergeinfo property, and apply
>   that by hand, using svn propset. This will be tricky, and has to be
>   re-done manually every time you want to merge again.

Not my preferred approach ...

> * Merge with Subversion 1.7 or earlier.

If this would result in a sane state of the repository I might give
it a try.

> * Ignore all this, merge patches by hand and wait for the Git
>   transition to be completed.

I want to upgrade to the next release and I'm wondering whether it
would be possible to just svn copy that new version over from the
vendor directory to the contrib directory. The import to the vendor
area and the contrib directory have very similar commit messages and
thus there would be no loss of commit history.

If this is possible and does not cause problems for the SVN repo or
the Git conversion, this might be the simplest solution.

Thank you for your reply and the clarification of the situation!

Best regards, STefan


More information about the svn-src-head mailing list