[svk-devel] Multiple rev checkout of same branch (trunk) - More findings

Mark Grimes mark at stateful.net
Wed Dec 20 20:15:46 EST 2006


To annotate this "bug" in one log so that you can see what I mean as a
whole, see below:

(mark at entropy /tmp) svk co /abcd/trunk abcd-new
Syncing /abcd/trunk(/trunk) in /private/tmp/abcd-new to 48.
.. (works)
(mark at entropy /tmp) svk co -r2 /abcd/trunk abcd-orig
Path /abcd/trunk does not exist.
(mark at entropy /tmp) svk co --list | grep abcd
  /abcd/trunk                           /Code/abcd
  /abcd/trunk                           /private/tmp/abcd-new
? /abcd/trunk                           /private/tmp/abcd-orig
(mark at entropy /tmp) ls -ld abcd-new
0 drwxr-xr-x   4 mark  wheel  136 Dec 20 16:53 abcd-new/
(mark at entropy /tmp) ls -ld abcd-orig
ls: abcd-orig: No such file or directory

Maybe this helps to see a working checkout and not working checkout
side-by-side.

Ironically,

(mark at entropy /tmp) svk co -r5 /abcd/trunk abcd5
Path /abcd/trunk does not exist.
(mark at entropy /tmp) svk co -r10 /abcd/trunk abcd10
Path /abcd/trunk does not exist.
(mark at entropy /tmp) svk co -r20 /abcd/trunk abcd20
Path /abcd/trunk does not exist.
(mark at entropy /tmp) svk co -r30 /abcd/trunk abcd30
Path /abcd/trunk does not exist.
(mark at entropy /tmp) svk co -r40 /abcd/trunk abcd40
Syncing /abcd/trunk(/trunk) in /private/tmp/abcd40 to 40.

Now all I recognize is that late in the game (somewhere between r30 and
r40) I dumped a prior repo and restored it into another because i was
using /company/projectname/{trunk,tags,branches} instead of
/projectname/{trunk,tags,branches}.  At some point I felt the company
name was redundant as I am only working on one project for them.

Now I can't tell you the original mechanism I used, but it's pretty
textbook for backing up fsfs repos.

Is there any other information I can pull out of the repo that would
assist why I can do nothing with the earlier revisions? (Even though I
can cat files from rev 2, and do other things with the depot itself?!)

Interestingly enough I'm discovering the dump and restore from one fsfs
repo to another was not much success...

(mark at entropy /tmp) svk ls -r2 /abcd/
abcd/
(mark at entropy /tmp) svk ls -r3 /abcd/
abcd/
(mark at entropy /tmp) svk ls -r4 /abcd/
abcd/
(mark at entropy /tmp) svk ls -r10 /abcd/
abcd/
(mark at entropy /tmp) svk ls -r30 /abcd/
abcd/
(mark at entropy /tmp) svk ls -r40 /abcd/
branches/
tags/
trunk/

Yet:

(mark at entropy /tmp) svk ls -r30 /abcd/abcd/
Filesystem has no item: File not found: revision 48, path '/abcd'

This is concerning.  When I migrated to the new depotname convention
(/company/proj -> /proj) there were no messages indicating any sort of
failure, so I'm not sure how I created this fragile state.

I DID however hold onto the old repo, and this confirms the problem:

(mark at entropy /tmp) svk info /company/
Depot Path: /company/
Revision: 30
Last Changed Rev.: 30

(mark at entropy /tmp) svk info /company/
(mark at entropy /tmp) svk ls /company/
abcd/
(mark at entropy /tmp) svk ls /company/abcd
branches/
tags/
trunk/

So I suppose this is simply bad practice?  As dumping a fsfs repo and
restoring it to another name makes all prior commits to the dump pretty
useless from a checkout perspective?  I'm hoping this is not the
case... but it's a good thing I caught it early -- I just don't know
how to mitigate the problem.

-Mark


On 12/21/2006, "Mark Grimes" <mark at stateful.net> wrote:

>clkao,
>
>Thanks for the quick response.
>The normal checkout does work though... see below:
>
>(mark at entropy /tmp) svk info /abcd/
>Depot Path: /abcd/
>Revision: 48
>Last Changed Rev.: 48
>(mark at entropy /tmp) svk info /abcd/trunk
>Depot Path: /abcd/trunk
>Revision: 48
>Last Changed Rev.: 48
>Copied From: /abcd/trunk, Rev. 30
>Merged From: /branches/test1, Rev. 39
>Merged From: /branches/test2, Rev. 37
>Merged From: /abcd/trunk, Rev. 30
>
>(mark at entropy /tmp) svk ls /abcd/
>branches/
>tags/
>trunk/
>(mark at entropy /tmp) svk ls /abcd/trunk
>somedir/
>install.sh
>(mark at entropy /tmp)
>
>As you can see below, the missing checkout dir from the prior email's
>failed -r2 checkout that was still added to the checkout list even
>though it really didn't check anything out...
>
>(mark at entropy ~) svk co --list | grep -i abcd
>  /abcd/trunk                           /Code/abcd
>? /abcd/trunk                           /Users/mark/tmp/abcd
>(mark at entropy ~) svk co --purge
>Purge checkout of /abcd/trunk to non-existing directory
>/Users/mark/tmp/abcd? (y/n) y
>Checkout path '/Users/mark/tmp/abcd' detached.
>(mark at entropy ~) cd /tmp
>(mark at entropy /tmp) svk co /abcd/trunk abcd
>Syncing /abcd/trunk(/trunk) in /private/tmp/abcd to 48.
>..
>
>So it definitely works -- it may look strange because this is my only
>non-mirrored project, so I don't have a /abcd/{local,mirror}, it's
>just /abcd/{trunk,tags,branches}.
>
>-Mark
>
>On 12/20/2006, "Chia-Liang Kao" <clkao at clkao.org> wrote:
>
>>On 21/12/06, Mark Grimes <mark at stateful.net> wrote:
>>> (mark at entropy ~/tmp) svk co -r2 /abcd/
>>> (mark at entropy ~/tmp) svk co --list | grep abcd
>>>   /abcd/trunk                           /Code/abcd
>>
>>that doesn't look right to me.  perhaps it's already wrong there. is
>>the checkout working correctly?
>>
>>Cheers,
>>CLK
>>_______________________________________________
>>svk-devel mailing list
>>svk-devel at bestpractical.com
>>http://lists.bestpractical.com/cgi-bin/mailman/listinfo/svk-devel


More information about the svk-devel mailing list