Как удалить временные файлы из Subversion, но сохранить копию в моей локальной папке?
Когда мы перешли в SVN, мы просто включили все и вся в наши папки в Subversion. Я хочу исключить все файлы журнала в папке.
Я нахожусь на Ubuntu.
thinkcode@myserver:~/Project1/Log/*.txt
Все файлы.txt находятся на Subversion, и эти файлы журнала создаются ежедневно. Я хочу удалить их из Subversion, но сохранить их в своей папке журнала.
svn propedit svn:ignore ./some_path
кажется, не делает трюк. Новые файлы *.txt по-прежнему отображаются как '?' при выполнении svn status
.Я попробовал на новой папке, и я получаю svn: 'c.txt' is not under version control
Любые выводы очень ценятся!
3 ответа
Во-первых, что вы имеете в виду в Subversion?
Давайте уточним это:
В Subversion есть место, где хранятся все файлы и версии. Это хранилище. Вы никогда не увидите фактическую структуру каталогов хранилища, и у вас, вероятно, нет доступа для чтения / записи.
Вы извлекаете файлы из хранилища в локальный рабочий каталог. Рабочий каталог отражает конкретную версию различных файлов и каталогов, которые хранятся в вашем хранилище Subversion. Тем не менее, у вас есть доступ к ним. Если вы внесете изменения в один из них и подтвердите их, вы обновили репозиторий.
Хорошо, теперь, когда мы это выяснили, я сделаю предположение, что файлы, о которых вы говорите, находятся в вашем локальном каталоге, но не в исходном репозитории. Это верно?
В этом случае svn:ignore
должен находиться в каталоге, где находятся файлы журнала, и должен иметь значение "*.txt". Вы можете сделать это так:
$svn propset svn:ignore "*.txt" .
Обратите внимание на использование кавычек вокруг *.txt. Они необходимы в этом случае. Это предотвратит появление новых файлов в этом каталоге, если они соответствуют шаблону glob вашего svn:ignore, когда вы делаете svn status
, Они также не будут добавлены, если вы просто скажете svn add
:
$ svn add
Однако, если файлы уже находятся в хранилище, svn:ignore
собственность ничего не сделает. Если вы хотите удалить файлы из хранилища, но сохранить их на локальном диске, вы можете сделать это:
$ svn delete --keep-local (files to delete)
Svn статус '?' означает, что элемент не находится под контролем источника. svn status выведет список всех файлов в текущем каталоге, которые находятся под контролем исходного кода и были изменены, или что-либо, что не находится под контролем исходного кода
Поэтому кажется, что если он все еще находится в вашем локальном каталоге, вы уже достигли того, чего хотели.
Требуется две операции: удалить и игнорировать. Сначала отметьте все файлы для удаления. Тогда совершай. После этого примените игнорирование и убедитесь, что вы применяете его рекурсивно.