I one of the previous versions of my code, stored in a Subversion repository, there is sensitive information. How to erase it while keeping all other versions?
EDIT: The repository is Google Code Project Hosting, so I can't dump and restore the repository =(
Want you want is a SVN feature commonly called "obliterate", which unfortunately still is not implemented.
As a workaround, you will have to dump, filter & reimport your repository. See e.g. the entry in the SVN faq How do I completely remove a file from the repository's history?.
BTW: It's a dupe :-). https://stackoverflow.com/questions/663584/subversion-permanently-remove-incorrectly-checked-in-directory-project
EDIT:
The repository is Google Code Project Hosting, so I can't dump and restore the repository =(
As far as I can see, the only solution in this case is to (ask Google to) reset your respository (see this FAQ, and this blog post). This will completely remove all data from the repository (both current data and history), as if you had just started the repository using svnadmin create
.
Obviously, you'll need a backup of your repository first.
The best solution probably is:
snvsync
(this will also back up the history)snvsync
(see FAQ How do I import my existing source code? )You can't remove what's commited to subversion other than completely dump, erase the original, and recreate the repository from the dump.
If you want to completely remove a file/path, you can do that with the svndumpfilter:
svnadmin dump /path/to/repository > svndump
svndumpfilter exclude path/to/sensitivefile > svndump-excluded
svnadmin create /tmp/newrepository
svnadmin load /tmp/newrepository < svndump-excluded
Then backup your /path/to/repository and replace it with /tmp/newrepository after you've verified everything is ok.
If you want to only exclude a single revision, you'd have to do something like
svnadmin dump -r 0:1000 /path/to/repository > svndump1
svnadmin dump -r 1002:HEAD --incremental /path/to/repository > svndump2
svnadmin create /tmp/newrepository
svnadmin load /tmp/newrepository <svndump1
svnadmin load /tmp/newrepository <svndump2
That is, revision 1001 is excluded. You can't do it more fine grained btw, a whole revision have to be excluded. Same deal here, backup your original repository, verify that everything needed in the new repository is there.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With