СВН:Как мне сохранить локальный файл config.blah?
Вопрос
На сервере SVN есть файл с именем config.conf
.У меня локальная версия называется так же (там же). Как я могу убедиться, что моя локальная конфигурация не будет перезаписана и не проверена?
Пока я здесь, для каталога ответ другой?
Я использую Tortoise SVN, но ответы из командной строки — это круто.
Спасибо!
[Извините, если этот основной вопрос задавался раньше...Я искал, но не нашел.]
Решение
SVN всегда будет думать, что этот файл является частью репозитория, если вы назовете его одинаково и поместите в тот же каталог.Ваши варианты
- Переименуйте его (возможно, напишите сценарий оболочки для
mv config.conf config.conf.theirs && mv config.conf.mine config.conf
а затем запустите свое приложение) - Подвинь это.Возможно, добавьте в свое приложение некоторую логику, которая проверяет наличие config.conf в локальном каталоге, специфичном для пользователя, а затем использует config.conf по умолчанию, если ни один не найден.
Другие советы
У TortoiseSVN есть хороший ответ на половину этой проблемы: игнорировать при фиксации
Это предотвращает случайное внесение изменений «только локально», но не решает проблему случайного обновления локально измененного файла.
Прочтите эту публикацию в блоге, чтобы узнать, как:
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html
- исключите его из репозитория с помощью svn:ignore (сначала вам придется удалить его из репозитория)
- сохраните копию в config.conf.default со значениями-заполнителями.Вы можете сохранить копию по умолчанию в репозитории.
- используйте config.conf как обычно — Subversion больше его не увидит
Спасибо всем.Я думал, что Эоин злится, но на самом деле это правда.Вы не можете игнорировать файл, находящийся в системе контроля версий.
Согласно документации Tortoise
Игнорирование версионных элементов
Файлы и папки версии никогда не могут быть проигнорированы - это особенность подрывной деятельности.Если вы по ошибке версировали файл, прочитайте раздел «Игнорировать файлы, которые уже версируются» для инструкций о том, как «развернуть» его.
И из документации SVN
У меня есть файл в моем проекте, который каждый разработчик должен изменить, но я не хочу, чтобы эти локальные моды когда -либо были совершены.Как я могу сделать «SVN Commit» игнорировать файл?
Ответ:Не помещайте этот файл под контролем версий.Вместо этого поместите шаблон файла под контролем версий, что -то вроде «file.tmpl».
Затем, после начального «SVN Checkout», попросите ваших пользователей (или вашей системе сборки) выполнить обычную копию шаблона ОС в соответствующее имя файла и попросите пользователей настроить копию.Файл не выверс, поэтому он никогда не будет совершенен.И если вы хотите, вы можете добавить файл в его родительский каталог SVN: Игнорировать свойство, так что он не отображается как «?» в команде 'SVN Status'.
Это ужасно раздражает...Думаю, мне просто нужно быть осторожным с этим файлом и сделать резервную копию моей собственной конфигурации (которую я могу игнорировать).
Спасибо всем за ваши ответы.
Вы можете добавить svn-ignore:атрибут вашей локальной папки, исключающий config.conf или даже *.conf
Но я считаю, что вам придется полностью исключить этот файл из SVN, т.е.если он уже был возвращен в репозиторий, вам необходимо сначала удалить его из репозитория.
Игнорирование файла должно помочь вам:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html
Когда происходит подрывная деятельность с файлами конфигурации, я считаю очень полезным выделить для этого целый канал.Почему?В основном потому, что вы можете просто иметь две копии локального репозитория: одну для локального использования, другую для удаленного изменения.
Так:
/workdir/configuration [это ссылка на /workdir/conf_local]
/workdir/conf_local [обновлять локальную конфигурацию, но не отменять мои настройки]
/workdir/conf_remote [всегда обновляется с использованием удаленных данных, поэтому я могу зафиксировать изменения]
Я не знаю, какая у вас настройка и применимо ли это к любому языку, который вы используете, но я так делаю с веб-сайтами и PHP.
Сначала вы создаете конфигурацию по умолчанию, которая, вероятно, имеет простые значения, которые не будут работать для 90% настроек, но дает вам ссылку на то, какие значения существуют и что на самом деле можно настроить.Этот сценарий обычно называется 'config.default.php
' или что-то в этом же духе.Внизу этого скрипта есть что-то вроде:
if (file_exists("config.php")) require "config.php";
Простая логика.Если для файла конфигурации есть пользовательское переопределение, загрузите его и позвольте ему переопределить все, что необходимо.Затем просто игнорируйте этот файл пользовательской конфигурации с помощью уже описанных методов на всех машинах разработки и любых производственных машинах, которые по какой-либо причине сохраняют проверку svn.Это очень гибкая настройка, и аналогичные процедуры можно настроить для большинства языков/сред.
как отметил Scrappydog
Вы можете использовать/создавать разные списки в диалоговом окне фиксации.
он поддерживает игнорировать при фиксации list, таким образом файлы под этим списком не будут видны..
вы можете обратиться к ссылка на этот блог для получения подробной информации.
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html