Как вы перемещаете файл?


219

Я использую TortoiseSVN против репозитория SourceForge SVN. Я хотел бы переместить файл из одной папки в другую, чтобы сохранить историю изменений. Это возможно? Если так, то как ты это делаешь?

(Моя текущая стратегия состояла в том, чтобы скопировать файл в новую папку и зарегистрировать его, а затем удалить файл из текущей папки.)

Ответы:


95

Subversion имеет встроенную поддержку для перемещения файлов.

svn move SOURCE DESTINATION

См. Онлайн-справку (svn help move) для получения дополнительной информации.


Или другой способ сказать это: svn move <current path/filename> <destination path/filename>
Джо,

313

Ознакомьтесь с разделом 5.14.2. Перемещение файлов и папок (или отметьте «переместить» в указателе справки) справки TortoiseSVN. Вы делаете движение с помощью правого перетаскивания. В нем также упоминается, что вам нужно сделать коммит из родительской папки, чтобы сделать его «одной» ревизией. Это работает для внесения изменений в рабочую копию.

(Обратите внимание, что элементы SVN на следующем изображении будут отображаться только в том случае, если папка назначения уже добавлена ​​в хранилище.)

меню перемещения черепахи

Вы также можете сделать это через Repo Browser (раздел 5.23. Repository Browser справки).


Когда я выделил все мои файлы, перетащив их вправо, появилось обычное меню проводника Windows. Это позволило мне выбрать «перемещение», но это не было вариантом SVN, поэтому я не уверен, что что-то даже случилось. Когда я проверил, есть ли изменения, он сказал, что 300 файлов были удалены, а 300 не версионированы. Похоже, это не сработало правильно. Я боюсь совершить это, не зная, так ли это должно работать или нет
Джо Филлипс,

48
Я только что понял, что, вероятно, это не сработало, потому что я еще не добавил / не добавил новый каталог
Джо Филлипс

Я знаю, что это годы спустя, но комментарий Джо важен. я тоже боролся с этим - я упустил из виду эту небольшую заметку в ответе. Папка назначения должна находиться под контролем SVN, иначе это не будет работать. К счастью, SVN позволяет добавлять пустые папки. После помещения папки под контроль SVN перетаскивание правой кнопкой мыши будет работать, как описано выше. В противном случае отображается стандартное меню Windows «Копировать сюда / переместить сюда / отменить» (т. Е. Выбор SVN отсутствует).
ripvlan

Это было прекрасно. У меня были некоторые проблемы с перемещением более 1500 файлов за один раз. Перемещение их по одному каталогу за раз, казалось, избавило от этой проблемы.
Майкл Мерфи

80

С помощью TortoiseSVN я просто перемещаю файл на диск.

Когда я прихожу, чтобы зафиксировать свои изменения, я выбираю отсутствующий файл и новый и выбираю « Восстановить движение » в меню правой кнопки мыши:

введите описание изображения здесь

Это означает, что я могу позволить своей IDE перемещаться по файлам и использовать инструменты рефакторинга без потери истории.


3
Это мой предпочтительный способ перемещения файлов сейчас. Одно предупреждение; Между выполнением не более 20 файлов за раз, в противном случае поиск файлов, относящихся друг к другу, может занять очень много времени.
DarrenMB

@DarrenMB прав: я собираюсь перенести проект Android из Eclipse в Android Studio. Все файлы должны быть перемещены. Этот подход не тот, который я хочу использовать здесь.
Бондакс

@Bondax: да, для миграции целых проектов лучше переходить из SVN - это должно происходить очень редко. Я нашел это лучшим способом для большинства перемещений файлов, выполняемых большинством разработчиков во время проекта.
Кит

1
У меня тоже нет Repair Move, использующего черепаху SVN 1.9.4
Марк Паттерсон

@Mark Patterson: я вижу вариант, и я тоже на 1.9.4 (TortoiseSVN 1.9.4, сборка 27285 и Subversion 1.9.4, -релиз). Я не думаю, что ваша проблема связана с версией ... Вот официальная документация этой функции: tortoisesvn.net/repairmoves.html
Yosko

37

В TortoiseSVN щелкните правой кнопкой мыши где-нибудь и выберите TortoiseSVN> Repo Browser, откройте репозиторий.

Все, что вам нужно сделать, это перетащить файл из одной папки в нужное место. Он попросит вас добавить сообщение фиксации, и по умолчанию оно будет удалено как «Удаленный файл / папка».


22

Используя TortoiseSVN, я просто щелкаю правой кнопкой мыши и перетаскиваю папку из одного места в другое. Когда вы отпустите правую кнопку мыши, у вас появится опция «SVN Move Version File». Тем не менее, я считаю, что SVN не делает там ничего «модного», а просто удаляет файл в предыдущем месте и добавляет его в новое место.


18

Для клиента TortoiseSVN:

  1. Выберите файлы, которые вы хотите переместить,
  2. Щелкните правой кнопкой мыши и перетащите файлы в папку, в которую вы хотите переместить их,
  3. После того, как вы отпустите перетаскивание папки, появится окно. Нажмите «SVN Переместить версионные элементы сюда» ,
  4. После того, как вы нажмете выше, появится окно сообщения о фиксации. Введите сообщение и отправьте.

Теперь вы сделали.


8

Вырежьте файл через контекстное меню операционной системы, как обычно, затем вместо обычной вставки щелкните правой кнопкой мыши, чтобы открыть контекстное меню, затем выберите TortoiseSVN -> Paste(убедитесь, что вы делаете коммит из корня, чтобы включить как старые, так и новые файлы в коммит).


4

я думаю, что в браузере svn в tortoisesvn вы можете просто перетащить его из одного места в другое.


2

Поскольку вы используете черепаху, вы можете проверить эту ссылку на LosTechies. Это должно быть почти то, что вы ищете.

http://www.lostechies.com/blogs/joshua_lockwood/archive/2007/09/12/subversion-tip-of-the-day-moving-files.aspx


3
Поскольку эта ссылка может разорваться, вы можете скопировать соответствующую информацию в свой ответ.
Сис Тиммерман

3
... И эта связь разорвалась. Точка и дело.
Stuart.Sklinar

1

Если я не ошибаюсь, начиная с версии 1.5, SVN может отслеживать перемещенные файлы \ папки. В TortoiseSVN использовать можно перемещать файлы с помощью перетаскивания.


1

Может также называться «переименовывать» черепахой, но svn move - это команда в barebones svn клиенте.


самый простой и точный ответ - тот! Использование TortoiseSVN для перемещения файлов осуществляется с помощью щелчка правой кнопкой мыши> переименовать. Это оно.
RoeeK

1

Передача файла с использованием TortoiseSVN:

Шаг: 1 Пожалуйста, выберите файлы, которые вы хотите переместить, щелкните правой кнопкой мыши и перетащите файлы в папку, в которую вы хотите переместить их. Появится всплывающее окно после следования приведенным ниже инструкциям.

Вариант SVN

Шаг 2: После того, как вы нажмете выше, подтвердите файл, как указано ниже

SVN Commit


0

Если вы перемещаете папки через браузер репозитория, то при щелчке правой кнопкой мыши опция «Переместить» отсутствует; единственный способ - перетаскивать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.