2009-08-18 9 views
8

Jedna z poprzednich wersji mojego kodu, przechowywana w repozytorium Subversion, zawiera poufne informacje. Jak to usunąć, zachowując wszystkie pozostałe wersje?Jak usunąć poufne informacje z Subversion?

EDIT: Repozytorium jest gospodarzem kod projektu Google, więc nie mogę zrzucić i przywrócić repozytorium = (

+1

Nie sądzę, że jest coś, co możesz zrobić sam. Czy możesz poprosić Google o zniszczenie repozytorium, a następnie przebudowanie go? –

+0

Być może mogę to zrobić, jeśli wybiorę nową nazwę dla projektu. –

Odpowiedz

7

żebyś chcesz to SVN feature powszechnie nazywa się „zniszczyć”, który niestety nie jest jeszcze . realizowany

Jako obejście, trzeba będzie zrzucić, filtrować & ponownie importować swoje repozytorium Patrz np wejściu w FAQ SVN How do I completely remove a file from the repository's history?

BTW:.. jest to dupe :-). https://stackoverflow.com/questions/663584/subversion-permanently-remove-incorrectly-checked-in-directory-project

EDIT:

Repozytorium jest gospodarzem kod projektu Google, więc nie mogę zrzucić i przywrócić repozytorium = (

O ile widzę, jedynym rozwiązaniem w tym przypadku jest (poprosić Google) o zresetowanie swojego repozytorium (patrz this FAQ, i to blog post), co spowoduje całkowite usunięcie wszystkich danych z repozytorium (zarówno danych bieżących, jak i historii), tak jakby właśnie uruchomiłeś repozytorium przy użyciu svnadmin create.

Najpierw będziesz potrzebować kopii zapasowej swojego repozytorium.

Najlepszym rozwiązaniem prawdopodobnie jest:

  • utworzyć kopię zapasową repo wykorzystaniem snvsync (będzie to również kopii zapasowych historię)
  • zrobić zrzutu/filtr/przywracania taniec (patrz powyżej) na Twojej backup repo, aby usunąć problematyczne commmits
  • zresetować repozytorium Google
  • umieścić z powrotem swój przefiltrowany repo, ponownie używając snvsync (patrz FAQ How do I import my existing source code?)
7

Nie można usunąć tego, co zostało popełnione w subwersji innej niż całkowicie zrzutu, wymazać oryginał i odtworzyć repozytorium ze zrzutu.

Jeśli chcesz całkowicie usunąć plik/ścieżkę, można to zrobić z svndumpfilter:

svnadmin dump /path/to/repository > svndump 
svndumpfilter exclude path/to/sensitivefile > svndump-excluded 
svnadmin create /tmp/newrepository 
svnadmin load /tmp/newrepository < svndump-excluded 

Następnie tworzenia kopii zapasowych/ścieżka/do/repozytorium i zastąpić go/tmp/newrepository Po” ve sprawdzone wszystko jest w porządku.

Jeśli chcesz wykluczyć tylko jedną zmianę, trzeba by zrobić coś takiego

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 

To znaczy, wersja 1001 jest wykluczona.Nie możesz zrobić tego bardziej drobnoziarnistego, cała wersja musi zostać wykluczona. Ta sama umowa, wykonaj kopię zapasową oryginalnego repozytorium, sprawdź, czy jest tam wszystko, co jest potrzebne w nowym repozytorium.

Powiązane problemy