2017-02-20 101 views
9

Предположим, что я переименовал файл A в файл B с помощью проводника Windows и создал новый файл C.Отменить ремонт в TortoiseSVN

В Tortoise SVN, я случайно использовать "Ремонт Move" на файл A и C вместо A и B. Есть ли простой способ отменить ремонт (и переделать его с правильными файлами)? Изменения не выполняются в этот момент.

Единственный способ, которым я в настоящее время осведомлен о возврате удаления и добавления, который восстановит файл A, затем вручную удалить файл снова и правильно изменить ассоциации. При использовании нескольких файлов это несколько связано с риском случайного изменения локальных изменений, поэтому мне интересно, есть ли лучший способ.

Примечание: даже если TortoiseSVN используется для создания проблемы, также разрешен ответ с консолью svn.


Вот пример с файлами A.txt, B.txt и C.txt шаг за шагом:

После A переименовывается в B и C добавляют локально

>svn st 
!  A.txt 
?  B.txt 
?  C.txt 

После Tortoise SVN «Ремонт переезда "неправильно введено A ->C

>svn st 
D  A.txt 
     > moved to C.txt 
?  B.txt 
A + C.txt 
     > moved from A.txt 

Мой рабочий, чтобы исправить ситуацию, который я не очень доволен:

>ren C.txt C.txt.bak 
>svn revert C.txt A.txt 
>ren C.txt.bak C.txt 
>del A.txt 

в результате чего в стартовом положении, где я могу повторить ремонт с правильными файлами

>svn st 
!  A.txt 
?  B.txt 
?  C.txt 

Что бы я хотел, но не существует

svn mv --force --ignore-files A.txt B.txt 
svn add --force C.txt 

таким образом, что она игнорирует, что А уже помечено удален и позволяет передачу истории от А до В, переосмысливая C как чистый оных вместо истории перенося из А.

+0

Возможно, я ошибаюсь, но то, что вы НЕ хотите делать, это удалить изменения из этапа, а затем вручную исправить переименование, а затем выполнить этап. Это правильно? Если это так, то какова будет автоматическая версия этого процесса - то есть - как вы собираетесь сообщать SVN о том, какие изменения вы действительно хотите? –

+0

Еще несколько вещей - на самом деле это риск? Вы теряете данные/работу, если вы совершаете неправильные файлы? Сколько файлов мы говорим? –

+0

@LeftyGBalogh Я как-то надеюсь, что есть способ вернуть состояние SVN (например, 'deleted') без фактического восстановления файла позади. Это позволило бы правильно переделать ассоциации. Риск состоит в том, чтобы получить несогласованное состояние между метафайлами проектов и кодовыми файлами, закрутить историю версий или потерять локальные изменения. Мы говорим о том, что случилось со мной в прошлом и, вероятно, повторится в будущем. Я позаботился об этом для прошлых инцидентов, но я не доволен своей работой. – grek40

ответ

2

Там находится путь с участием 2 команды по А. txt вместо 4 команд в вашем текущем рабочем потоке (также влияя на C.txt). После того, как TortoiseSVN "ремонт ход" неправильно применен, выполните:

svn revert A.txt 
del A.txt 

svn stat будет:

!  A.txt 
?  B.txt 
A + C.txt 

С Tortoise SVN вы можете "ремонт движение" между a.txt и b.txt, в результате чего в правильном состоянии:

D  A.txt 
     > moved to B.txt 
A + B.txt 
     > moved from A.txt 
A + C.txt 

то же метод может быть использован в пользовательском интерфейсе TortoiseSVN (вернуться a.txt, а затем удалить a.txt из проводника). Причина этого заключается в том, что состояние перемещения связано с отсутствующим файлом, а не с файлом без версии. Единственная модификация на C.txt заключается в том, что он был добавлен с помощью команды move move (которую вы хотели бы добавить, вероятно, так или иначе).

Команда «Ремонт движение» работает только тогда, когда ровно два файла выбран, один из которых содержит «недостающее», а другой «не-версионируются» статуса. Только так TortoiseSVN может узнать, какой файл переименован в файл .

https://tortoisesvn.net/repairmoves.html

после возвращения & удаления из a.txt вы в конечном итоге с отсутствующим файлом (a.txt) и неустановленным версионируются файлом (b.txt) снова, как и прежде некорректного прикладного ремонта переехать. Таким образом, вы можете снова применить ремонт между этими двумя файлами.

+1

Спасибо за ваш ответ. Это также связывает историю 'A' с' C', но я предполагаю, что я просто прошу о простом решении чего-то, где TortoiseSVN выполняет некоторую работу в фоновом режиме (ремонт), и он не поддерживает легко исправить. Эта дополнительная ссылка на историю может быть безрезультатной. – grek40

+0

Ах, вы правы - после совершения 'C' получает историю' A' тоже! Это странно, потому что 'svn stat' не перечисляет'>, перемещенный из A.txt' для файла 'C', прежде чем совершать в этом случае. Во всяком случае, я рад, что это было полезно. – Constantin

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

  • Нет связанных вопросов^_^