Как предотвратить восстановление SVN удаленных файлов

Я работаю в команде разработчиков, и у нас нет точно разделенного кода. Поэтому, когда я работаю над чем-то около недели, мне нужно сделать обновление, прежде чем я сделаю свои изменения. Но когда я это делаю, все удаленные файлы восстанавливаются. Я знаю, что есть операция удаления SVN, но это раздражает делать это для каждого удаленного файла или каталога.

Есть ли какой-либо трюк, как предотвратить эту функцию?

Ответ 1

Итак, это не принципиальный новый ответ, но ни один из существующих, похоже, не соответствует вашему точному вопросу (и часто возникает проблема).

Вот мой подход: если вы удалили файлы и не хотите, чтобы они восстанавливались во время необходимого обновления:

  • Использовать функцию TortoiseSVN "Проверить наличие изменений"
  • Заказать список по статусу
  • Выбрать все файлы со статусом "missing"
  • Щелкните правой кнопкой мыши, удалите

Конечно, это "SVN delete", но таким образом вам не придется делать это в то время, когда вы фактически удаляете файлы и можете отметить все из них в пакете.

Ответ 2

Здесь есть два вида удалений.

  • Удалить из файловой системы (rm или delete).
  • Удалить из контроля версий (svn delete).

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

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

Обратите внимание, что это не означает, что невозможно получить копию файла. SVN хранит всю историю каждой ревизии, поэтому, если вы запрашиваете неточные версии, имеющие копию файла, вы получите копию файла svn delete d, как и в этой версии.

В редком случае вы действительно хотите, чтобы файл ушел из исторических записей, вам нужно сделать некоторые сценарии. В принципе, вы создадите новый репозиторий, который имитирует старый (минус файл). Для этого

Для каждого номера редакции от 1 до текущего.

  • получить файлы из старого репозитория.
  • удалить повреждающий файл.
  • передать новый репозиторий

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

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

Ответ 3

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

выполняются следующие шаги:

удалить локально: $ svn удалить somefile

зафиксировать удаление в репозитории $ svn commit -m "Удаленный файл 'somefile'"

Ответ 4

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

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

Лучше всего использовать концепцию "редкой проверки".

В последних версиях TortoiseSVN имеет кнопку "Выбрать элементы" в диалоговом окне проверки. Это позволяет вам выбирать с галочками каждый элемент, который вы хотите включить в свою рабочую копию. Другие предметы не будут загружены в вашу рабочую копию при проверке или обновлении. Диалоговое окно "Обновить в ревизию..." также содержит эту функцию "Выбрать элементы". Обратите внимание, что это "Правый щелчок- > TortoiseSVN- > Update to revision...", а не только "Щелкните правой кнопкой мыши- > Обновить".

Вы также можете использовать "Обновить до версии", чтобы установить глубину "исключить" для отдельных элементов, если вам нужно только избавиться от одного или двух.

Из командной строки "svn update" или "svn checkout" с опцией "--depth" - это способ выполнить одно и то же. При необходимости измените параметр "--depth", чтобы получить рабочую копию с произвольным набором элементов.

Ответ 5

Чтобы смягчить проблему после возникновения проблемы, я делаю это:

  • Выберите все строки в окне черепахи svn, которые были "Восстановлены", и скопируйте
  • Вставить во второй столбец нового листа excel.
  • в первом столбце введите: del "
  • заполнить столбец "del" рядом с путями восстановленных файлов, дважды щелкнув нижний правый угол первой ячейки, в которую вы набрали del "
  • заполнить после каждого пути закрытием "
  • Блокнот Win + R (Пуск → Выполнить) → Ввод. Скопируйте все и вставьте в блокнот. Выберите и скопируйте одну вкладку, Ctrl + H, замените все, замените вкладки ничем, чтобы удалить вкладки
  • Win + R cmd → Введите, щелкните правой кнопкой мыши и вставьте команды удаления в командной строке, нажмите Enter и файлы будут удалены.

Я знаю, что это длинный список инструкций, но я считаю, что они должны быть второстепенными для разработчиков, и их необходимо знать и быстро, в нескольких целях за пределами этого, используя excel таким образом, создавая и запуская пакет команды быстро и т.д.