Как исключить папку, а не ее дочерние элементы из обновления SVN в Turtoise SVN - PullRequest
1 голос
/ 31 августа 2011

Я работаю над общим проектом, который помещен в SVN. Структура каталогов проекта выглядит следующим образом:

ParentDir
- Child_Dir_1
+ GrandChild_Dir_1
+ GrandChild_Dir_2
- Child_Dir_2

Child_Dir_1 содержит файлы конфигурации (файлы Eclipse .LAUNCH), и люди помещают в эту папку все виды файлов.

Таким образом, каждый раз, когда я обновляю свой исходный код (щелкнув правой кнопкой мыши по ParentDir и выбрав «Обновить»), я получаю множество конфигураций, которые мне на самом деле не нужны, и мне приходится удалять их вручную.

Мне все еще нужно обновить дочерние элементы Child_Dir_1 (GrandChild_Dir_1 и GrandChild_Dir_2).

Я попытался установить свойство ignore объекта Child_Dir_1 для исключения файлов * .LAUNCH, но каждый раз, когда я обновляю исходный код, те, которые я удалял вручную, восстанавливаются в Child_Dir_1.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Поскольку вы используете TortoiseSVN:

Перейдите в Child_Dir_1, выберите GrandChild_Dir_1 and GrandChild_Dir_2 и щелкните правой кнопкой мыши TortoiseSVN -> Обновить.

Это обновит только эти две папки.

Игнорировать, чтобы вы могли «игнорировать» (из коммита, состояния и т. Д.) Неотслеживаемые файлы, файлы, которые не были зарегистрированы.

0 голосов
/ 31 августа 2011

Может быть, ответ Манойлда - это решение для вас, но у меня есть сомнения. Проблема здесь в том, что эти файлы действительно являются частью проекта. Они неизбежны и должны синхронизироваться с остальной частью рабочей копии.

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

Вариант 2 (второй вариант): игнорировать эти файлы конфигурации. Используйте свои собственные файлы для своей конфигурации, с именами, которые не конфликтуют с существующими. Вы можете даже добавить свои файлы в SVN, но вы также можете не добавлять их. Не имеет значения, если вам не нужна конфигурация на другом компьютере.

Вариант 3: Использовать группу игнорирования при фиксации. Используйте те файлы конфигурации, которые уже существуют. Измените их по своему вкусу, но никогда не совершайте их. Чтобы убедиться, что вы не зафиксировали их случайно, пометьте их как нефиксированные (перейдите в окно фиксации, выберите все нефиксируемые файлы, щелкните правой кнопкой мыши> Переместить в список изменений> игнорировать при фиксации). Проблема в том, что ваши файлы не защищены от обновлений других пользователей, но на самом деле это может быть хорошо.

Вариант 4: вырубить папку (ужасный взлом). Удалите Child_Dir_1 из рабочей копии (щелкните правой кнопкой мыши по нему> Обновить до ревизии> установите для параметра Рабочая глубина значение Исключить). Сначала сохраните папку в другом месте, потому что она исчезнет. После этого создайте его снова, внутри него извлеките все подпапки (GrandChild_Dir_1 и GrandChild_Dir_2) и скопируйте файлы конфигурации. Теперь у вас есть полный контроль над содержимым папки, но обновление и фиксация усложняются.

Редактировать: Теоретически существует вариант 5, но я сомневаюсь, что он может быть успешно реализован. Вы можете попробовать: Использовать жесткие ссылки NTFS . Скопируйте все дерево со всеми файлами как жесткие ссылки на существующие файлы, кроме папок .svn и их содержимого. Исходный каталог используется для обновления, фиксации, добавления и удаления операций SVN, а новый каталог - для редактирования файлов. Из новой директории удалите все ненужные файлы и вставьте все нужные вам файлы, которые не являются частью SVN. Проблема здесь заключается в незначительной дополнительной работе при удалении файлов из SVN и их добавлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...