[SciPy-dev] SVN "corruption" / bzr-svn oddity?

josef.pktd at gmail.com josef.pktd at gmail.com
Wed Apr 15 21:19:44 EDT 2009


On Wed, Apr 15, 2009 at 7:30 PM,  <josef.pktd at gmail.com> wrote:
> On Wed, Apr 15, 2009 at 7:06 PM, Pauli Virtanen <pav at iki.fi> wrote:
>>
>> Hi all,
>>
>> Commit r5661 apparently reverted some previous commits: compare
>>
>>        http://projects.scipy.org/scipy/browser/trunk/scipy/special/tests/test_basic.py?rev=5660
>>        http://projects.scipy.org/scipy/browser/trunk/scipy/special/tests/test_basic.py?rev=5661
>>
>> looking at the line "cephes.pbdv(1,0),(0.0,0.0)", which previously read
>> "cephes.pbdv(1,0),(0.0,1.0)". The strange thing is that
>>
>>        http://projects.scipy.org/scipy/changeset/5661
>>
>> does not show that this change was made. It seems like bzr-svn did something
>> clever...
>>
>>
>> Moreover,
>>
>>        svn diff -r 5660:5661 test_basic.py
>>
>> says
>>
>>        svn: Unable to find repository location for 'test_basic.py' in revision 5660
>>
>> which is unexpected.
>>
>>
>> The Git repository indicates that something like this occurred:
>>
>>       5655 5656 5657 5658 5659 5660
>>        o----o----o----o----o----o----o 5661
>>         \___________________________/
>>
>> So, the revision 5661 is based on 5655. Now, bzr-svn has done something
>> and silently reverted the changesets 5656-5660 so that the reversion
>> does not appear in the commit 5661. (Surprisingly, git-svn *recognized* this
>> as a merge!) The full diff appears to be
>>
>>        $ git diff --stat 746e23..svn/trunk
>>        INSTALL.txt                                       |  222 ++++++++++++++-------
>>        scipy/io/matlab/tests/data/test_skip_variable.mat |  Bin 20225 -> 0 bytes
>>        scipy/io/matlab/tests/test_mio.py                 |   31 +---
>>        scipy/special/specfun_wrappers.c                  |    6 +-
>>        scipy/special/tests/test_basic.py                 |   31 +---
>>        scipy/stats/distributions.py                      |    2 +-
>>
>> So, it seems that bzr-svn does some "deep" SVN-fu on merges. Looking at
>> the commit message for r5661 more closely, it says ". (copied from trunk)",
>> and indeed "svn log ." indicates that r5661 is based on r5660.
>>
>> Does someone understand SVN enough to know what happened and how
>> to revert it, if needed?
>>
>> My guess would be
>>
>>        svn cp http://svn.scipy.org/svn/scipy/trunk@5660 http://svn.scipy.org/svn/scipy/trunk
>>
>>    ***
>>
>> Wed, 15 Apr 2009 23:31:39 +0200, Xavier Gnata wrote:
>> [clip]
>>> Well I'm do not understand this point Looking at
>>> http://svn.scipy.org/svn/scipy/trunk/scipy/special/tests/test_basic.py I
>>> can read :
>>>
>>> def test_pbdv(self):
>>>         assert_equal(cephes.pbdv(1,0),(0.0,0.0)
>>>
>>> This website claims I'm looking at
>>>
>>>
>>>     Revision 5661: /trunk/scipy/special/tests
>>>
>>> I'm must be missing something...sorry for the noise....
>>
>> Good catch, you're completely right! Something strange is going on.
>> I only checked it via looking at the commits in
>>
>>        http://projects.scipy.org/scipy/timeline
>>
>> and as you can see, none of the commits after 5657 actually reverts the
>> change, so I assumed it was still there...
>>
>> --
>> Pauli Virtanen
>>
>> _______________________________________________
>> Scipy-dev mailing list
>> Scipy-dev at scipy.org
>> http://mail.scipy.org/mailman/listinfo/scipy-dev
>>
>
>
> I think that's my fault, but I haven't figured out how to revert this.
>
> I tried to use bzr-svn but something looked strange, but I thought it
> is only the large commit message.
>
> Can you undo whatever happened in
> http://projects.scipy.org/scipy/changeset/5661, and I won't try this
> anymore if it messes up the repository and not just the commit
> message.
>
> Sorry,
>
> Josef
>

I figured out what I did wrong. It is all my fault for over-riding a
bzr warning.

The short version:
I forced a branch/checkout based on svn r5655 together with a new
change (revision 5661) back into the svn repository.

my setup:
C:/Josef/eclipsegworkspace/scipy-trunk-new/
is a checkout branch, but didn't realize that if I push anything on
this branch, it gets by default immediately committed to the svn
repository also.
Now, I know that when I pushed my changes this checkout was at  svn r5655

C:\Josef\eclipsegworkspace\scipy-branch
is a regular branch in which I am working in, this was also at   svn r5655

Next is a case of ignored warnings even if nothing seemed wrong. These
are the relevant commands, I checked several other things, but I never
checked with the remote svn repository.

> cd C:\Josef\eclipsegworkspace\scipy-branch
> bzr push C:/Josef/eclipsegworkspace/scipy-trunk-new/
bzr: ERROR: These branches have diverged.  Try using "merge" and then "push".

> bzr merge C:/Josef/eclipsegworkspace/scipy-trunk-new/
Nothing to do.

> bzr push  --overwrite C:/Josef/eclipsegworkspace/scipy-trunk-new/
All changes applied successfully.
Pushed up to revision 4967.


The last overwrite push, not only pushed to my local checkout, but
directly also to the scipy svn repository.
My mistake was that I thought, I still had one safety layer between me
and the scipy svn, that I will still need to push from the checkout to
the remote repository. Additionally, I'm pretty sure, I never told bzr
my scipy svn password.

For now I stick with svn, and set up my own test repository until I
have more practice with decentralized version control.

Are the svn data base (svnadmin verify) and the trac data base
internally still consistent?

Sorry about this.

Josef

"Foolproof systems to not take into account the ingenuity of fools." Gene Brown



More information about the SciPy-Dev mailing list