Zombiied Mirrors

For those of you reading this looking for a solution when you svk mv a mirrored path, jump to The Solution

The Problem

So today I managed to fsck my SVK depot. In attempting to use mst's Reaction I mistakenly mirrored the repository under //mirrror/reaction. As noticed when i tried the following commands

[ash@bowser perl]$ svk co //mirror/reaction
path /mirror does not exist.

[ash@bowser perl]$ svk co -d /home/ash/perl/reaction
Checkout path '/home/ash/perl/reaction' detached.

[ash@bowser perl]svk mirror -l
Path                    Source
============================================================
//mirror/your_prefs     https://mydomain.com/svn/...
//mirrror/reaction      http://code2.0beta.co.uk/reaction/svn

[ash@bowser perl]$ svk mv //mirrror/reaction //mirror/reaction
Waiting for editor...
Committed revision 251.
Committed revision 252.
[ash@bowser perl]$ svk mirror -l
Path                    Source
============================================================
//mirror/your_prefs     https://mydomain.com/svn/...

Oh look at that. Its not there anymore. Hrmmmmm. What happens if we try to mirror it again...

[ash@bowser perl]$ svk mirror //mirror/reaction http://code2.0beta.co.uk/reaction/svn
/mirror/reaction already exists.

Ah, so lets remove it then try again:

[ash@bowser perl]$ svk rm //mirror/reaction
Waiting for editor...
Committed revision 253.
[ash@bowser perl]$ svk co http://code2.0beta.co.uk/reaction/svn 
<snip svk output>
Depot path: [//mirror/svn] //mirror/reaction
Filesystem has no item: File not found: revision 253, path '/mirrror/reaction'
[ash@bowser perl]$ svk mirror -l
Path                    Source
============================================================
//mirror/your_prefs     https://mydomain.com/svn/...

Bah. That didn't work either.

[ash@bowser perl]$ svk ls //
mirror/
mirrror/
[ash@bowser perl]$ svk rm //mirrror
//mirrror contains mirror, remove explicitly: //mirrror/reaction
[ash@bowser perl]$ svk rm //mirrror/reaction
no source specificed at /usr/local/share/perl/5.8.7/SVN/Mirror.pm line 52.

The Solution

To fix this problem, you have to remove the moved mirror from the svm:mirror property on the root of your depot (// in most cases.)

[ash@bowser perl]$ svk pg svm:mirror //
/mirror/your_prefs
/mirrror/reaction
[ash@bowser perl]$ svk ps  svm:mirror "/mirror/your_prefs
> " //
Waiting for editor...
Committed revision 254.
[ash@bowser perl]$ svk mirror //mirror/reaction http://code2.0beta.co.uk/reaction/svn
Committed revision 255.
[ash@bowser perl]$ svk sync //mirror/reaction
Syncing http://code2.0beta.co.uk/reaction/svn
Retrieving log information from 1 to 216
Committed revision 256 from revision 1.
...
Committed revision 471 from revision 216.

Huzzah! It's working!. Now to just remove //mirrror:

[ash@bowser perl]$ svk rm //mirrror
Waiting for editor...
Committed revision 472.

Done and dusted.

Tho strangely this bug report seems to imply this problem as fixed in 2005. However the above and [svk-devel] Unable to recover from zombie mirror say otherwise.

Anyone know differently?




  • Re: Zombified Mirrors

    Written by Anonymous Coward (0) on Tue Jan 23 19:06:51 2007

    Thanks a million for taking the trouble to post this. I found the ignored cries for help in the mailing list first, and was beginning to despair.