Changes between Initial Version and Version 1 of obliterate_svn_file


Ignore:
Timestamp:
Sep 2, 2008, 2:54:28 PM (16 years ago)
Author:
Jamie McClelland
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • obliterate_svn_file

    v1 v1  
     1= How do I remove a file from svn (and all of it's revisions)? =
     2
     3This page is designed for MFPL administrators. Special permissions are required to execute these steps. If you have a file you would like removed from our subversion repository, please [/newticket open a ticket to request it's removal].
     4
     5First, check the [ http://subversion.tigris.org/faq.html#removal docs] to see if `svn obliterate` has been implemented. As of this writing, it has not been implemented.
     6
     7To manually obliterate a file, follow these steps on `moses.mayfirst.org` (aka `svn.mayfirst.org`). Replace $GROUP with the name of the group whose repo has the file you want to obliterate.
     8
     9{{{
     10mkdir /srv/backup
     11cd /srv/backup
     12cp -rp /srv/svn/$GROUP $GROUP.full.backup
     13svnadmin dump /srv/svn/$GROUP > $GROUP.dump
     14grep "file/or/dir/to/delete" $GROUP.dump # check output for exact path to pass to next command
     15cat $GROUP.dump | svndumpfilter exclude path/to/exclude > $GROUP.clean.dump
     16grep "file/or/dir/to/delete" mfpl.clean.dump #make sure it's really gone
     17mv /home/$GROUP/.ssh/authorized_keys{,.off} # make sure nobody uses the repo
     18rm -rf /srv/svn/$GROUP
     19svnadmin create /srv/svn/$GROUP
     20cp $GROUP.full.backup/hooks/* /srv/svn/$GROUP/hooks/
     21svnadmin load /srv/svn/$GROUP < $GROUP.clean.dump
     22chgrp -R $GROUP /srv/svn/$GROUP
     23find /srv/svn/$GROUP -perm -u+w -exec chmod g+w '{}' ';'
     24mv /home/$GROUP/.ssh/authorized_keys{.off,}
     25}}}
     26
     27Note: if you are removing a file or directory from the MFPL repo or any repo that is synchronizing to a trac installation, you need to repeat this process on the repo feeding the trac installation.
     28
     29Here's a sample output of running these commands on moses, the server running the MFPL trac installation (note - because it's on moses, it's a little different than the commands in the above example which are designed to be run on allende, the svn server). I used the --quiet option so the whole session could be copied with less noise. Also, the initial backup was made earlier in the session.
     30
     31{{{
     320 moses:/srv/svn/backup# ls
     33mfpl.full.backup
     340 moses:/srv/svn/backup# svnadmin dump --quiet /srv/svn/mfpl > mfpl.dump
     350 moses:/srv/svn/backup# grep "mass_email/log.txt" mfpl.dump
     36Node-path: trunk/seso/basebuilder/databases/seso/scripts/mass_email/log.txt
     37Node-path: trunk/seso/basebuilder/databases/seso/scripts/mass_email/log.txt.sample
     38Node-path: trunk/seso/basebuilder/databases/seso/scripts/mass_email/log.txt
     39Node-path: tags/seso/4/basebuilder/databases/seso/scripts/mass_email/log.txt
     400 moses:/srv/svn/backup# cat mfpl.dump | svndumpfilter --quiet exclude trunk/seso/basebuilder/databases/seso/scripts/mass_email/log.txt > mfpl.clean.dump
     410 moses:/srv/svn/backup# cat mfpl.clean.dump | svndumpfilter --quiet exclude tags/seso/4/basebuilder/databases/seso/scripts/mass_email/log.txt > mfpl.clean.final.dump
     420 moses:/srv/svn/backup# grep "mass_email/log.txt" mfpl.clean.final.dump
     431 moses:/srv/svn/backup# mv /home/svnsync/.ssh/authorized_keys{,.off}
     440 moses:/srv/svn/backup# rm -rf /srv/svn/mfpl
     450 moses:/srv/svn/backup# svnadmin create /srv/svn/mfpl
     460 moses:/srv/svn/backup# cp mfpl.full.backup/hooks/* /srv/svn/mfpl/hooks/
     47cp: overwrite `/srv/svn/mfpl/hooks/post-commit.tmpl'? y
     48cp: overwrite `/srv/svn/mfpl/hooks/post-lock.tmpl'? y
     49cp: overwrite `/srv/svn/mfpl/hooks/post-revprop-change.tmpl'? y
     50cp: overwrite `/srv/svn/mfpl/hooks/post-unlock.tmpl'? y
     51cp: overwrite `/srv/svn/mfpl/hooks/pre-commit.tmpl'? y
     52cp: overwrite `/srv/svn/mfpl/hooks/pre-lock.tmpl'? y
     53cp: overwrite `/srv/svn/mfpl/hooks/pre-revprop-change.tmpl'? y
     54cp: overwrite `/srv/svn/mfpl/hooks/pre-unlock.tmpl'? y
     55cp: overwrite `/srv/svn/mfpl/hooks/start-commit.tmpl'? y
     560 moses:/srv/svn/backup# svnadmin load --quiet /srv/svn/mfpl < mfpl.clean.final.dump
     570 moses:/srv/svn/backup# chgrp -R svnsync:svnsync /srv/svn/mfpl
     58chgrp: invalid group `svnsync:svnsync'
     591 moses:/srv/svn/backup# chown -R svnsync:svnsync /srv/svn/mfpl
     600 moses:/srv/svn/backup# mv /home/svnsync/.ssh/authorized_keys{.off,}
     610 moses:/srv/svn/backup#
     62}}}
     63
     64Thanks to [http://www.robgonda.com/blog/index.cfm/2005/7/10/SVN-Obliterate Rob Gonada for spelling out the steps to take].