2010-02-21 3 views
6

Случайно я назвал «svn import ...» в неправильном каталоге. Есть ли разумный способ отменить эту ошибку?Можно ли отменить импорт в подрывной деятельности?

Googling Я не нашел полезного ответа, и ближайший к моей проблеме, который я нашел в stackoverflow, был importing the correct data to the wrong place, тогда как я импортировал неверные данные в нужное место.

И: репозиторий не является новым, поэтому удалить его не может.

Было бы иронично, если бы я не мог отменить операции в системе контроля версий. Так может кто-нибудь мне помочь? (Спасибо!)

EDIT: Я получил свой репозиторий, хранящийся в базе данных Berkley, то есть в файловой системе. Рассматривая дату изменения всех файлов/каталогов и содержимое только что измененных файлов, я смог решить, что делать, за исключением одного: знает ли кто-нибудь, для чего нужен файл txn-current? Я предполагаю, что он связан с обработкой транзакций, но в чем смысл его содержимого (длина 2 байта)?

EDIT 2: Спасибо за полезные ответы. Я принял ответ Мартина, поскольку он должен обеспечить правильный способ сделать это (поскольку я подвергаюсь давлению под давлением, я просто удалил некоторые файлы, как намекнул мой первый EDIT, игнорируя содержание txn-current и дожидаясь до сих пор). Но посмотрите ссылку, которую Вим дал в своем комментарии!

ответ

10

Если бы не было никаких других фиксаций, так как вы импортировали файлы, то вы может легко удалить последнюю версию, используя svn dump.

Следующий пример взят из this page:

  • (предполагается, что поправки 1-125 исправны, 126 является то, что последний пересмотр, в результате чего проблемы)
  • сделать резервную копию хранилища, а затем сбросить хранилище (за исключением последнего пересмотра):
    • > svnadmin dump -r1:125 myrepo > my.dump
  • теперь создайте новое хранилище и загрузить дамп:
    • > svnadmin create myrepo
    • > svnadmin load myrepo < my.dump
11

Вы не можете отменить фиксацию непосредственно, единственным вариантом является сделать svnadmin dump, удалить коммита из DUMPFILE (либо вручную с помощью текстового редактора или с помощью svndumpfilter и svnadmin load его снова.

Если это не является реальной проблемой, что данные остаются где-то в хранилище как старой ревизии, вы можете просто svn delete его и совершить что-то другое вместо.

+0

Спасибо, но были некоторые бинарные файлы в том каталоге, и я хотел бы, чтобы избавиться от них. Как удалить данные с помощью дампа? –

+2

В более старой версии книги SVN есть дополнительная информация об использовании svndumpfilter: http://svnbook.red-bean.com/en/1.2/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svndumpfilter – Wim

+0

Очень полезная ссылка, еще раз спасибо! Я нахожусь на другом пути в данный момент (см. Предстоящее редактирование моего вопроса), но если это не сработает, я попробую svndumpfilter. –

Смежные вопросы