возможно ли для subversion игнорировать все содержимое каталога, кроме одного файла?

У меня есть каталог /packages с одним файлом, который я хочу зафиксировать и посмотреть. Однако, если добавляются новые вещи, я бы хотел их игнорировать. Это возможно?


person end-user    schedule 10.12.2013    source источник
comment
К сожалению, нет - см. мой ответ на аналогичный вопрос .   -  person Sameer Singh    schedule 10.12.2013
comment
Да, мне было интересно, смогу ли я сделать что-то вроде svn:ignore ./packages/* после фиксации одного файла.   -  person end-user    schedule 10.12.2013
comment
Это сработает, но позже может запутаться. Также - свойство svn:ignore должно быть помещено в папку packages/ со значением * или *.*   -  person Sameer Singh    schedule 10.12.2013
comment
почему это может сбивать с толку?   -  person end-user    schedule 10.12.2013
comment
Ради аргумента предположим, что вы зафиксировали файл, затем добавили свойство svn:ignore и зафиксировали его. Затем вы изменяете зафиксированный файл. Клиент SVN может подумать, что зафиксированный файл следует игнорировать, поэтому при повторной попытке фиксации он сообщает, что коммитить нечего. Это случалось с TortoiseSVN один или два раза, но затем он осознал свою ошибку и показал измененный файл, готовый к фиксации.   -  person Sameer Singh    schedule 10.12.2013
comment
Я должен не согласиться с Самиром - использование шаблона игнорирования . - это именно то, как это сделать, как @Ben точно описал в своем ответе.   -  person Michael Sorens    schedule 11.12.2013


Ответы (5)


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

person Ben    schedule 10.12.2013
comment
+1: Среди комментариев, опубликованных на вопрос и другие ответы, это самый простой и довольно точный подход. Хотя нет необходимости читать дальше, Часть 2 моей TortoiseSVN Cookbook описывает ту же информацию (хотя и намного менее сжато :-). - person Michael Sorens; 11.12.2013

Это можно сделать с помощью функции хука предварительной фиксации. Вы можете игнорировать все имена файлов, кроме этого файла, чтобы зафиксировать. См. эту ссылку для получения дополнительной информации http://pear.php.net/manual/en/package.php.php-codesniffer.svn-pre-commit.php

person Satii    schedule 10.12.2013

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

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

Будьте осторожны, чтобы установить глубину для файлов, а не для каталога. Любые файлы, добавленные впоследствии, появятся в вашем каталоге, и вам также придется их исключить. Вероятно, можно настроить каталог так, чтобы исключить все, а затем повторно включить только 1 файл, который вы хотите — я не пробовал, сообщите нам, если это сработает.

person gbjbaanb    schedule 10.12.2013

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

person Ashwin Bhargava    schedule 11.12.2013

Я использую Tortoise git и игнорирую пакеты через. .gitignore файл, как показано ниже. Если я внесу изменения в файл repositories.config, окно изменений покажет это:

# Visual Studio Nuget package directory
packages/*/
person G J    schedule 16.06.2016
comment
Спрашивал о svn, а не о git. - person end-user; 16.06.2016