Можно ли отменить импорт в Subversion? - PullRequest
6 голосов
/ 21 февраля 2010

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

Поиск в Google Я не нашел никакого полезного ответа, и наиболее близкой к моей проблеме, которую я нашел в stackoverflow, был импорт правильных данных в неправильное место , тогда как я импортировал неправильные данные в правильное место.

И: хранилище НЕ новое, поэтому об его удалении не может быть и речи.

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

РЕДАКТИРОВАТЬ: мой репозиторий хранится в базе данных Berkley, то есть в файловой системе. Глядя на дату изменения всех файлов / каталогов и на содержимое только что измененных файлов, я смог понять, что делать, кроме одного: кто-нибудь знает, для чего предназначен файл txn-current? Я предполагаю, что это связано с обработкой транзакций, но каково значение ее содержимого (длина составляет 2 байта)?

РЕДАКТИРОВАТЬ 2: Спасибо за оба полезных ответов. Я принял ответ Мартина, так как он должен обеспечить надлежащий способ сделать это (поскольку я испытываю нехватку времени, я просто удалил некоторые файлы, как подсказывалось в моем первом редактировании, игнорируя содержимое txn-current и живя до сих пор). Но посмотрите на ссылку, которую Вим дал в своем комментарии!

Ответы [ 2 ]

11 голосов
/ 21 февраля 2010

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

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

10 голосов
/ 21 февраля 2010

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

Следующий пример взят из этой страницы :

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