SVN: Как мне сохранить мой локальный файл config.blah? - PullRequest
8 голосов
/ 24 октября 2008

На сервере SVN существует файл с именем config.conf. У меня локальная версия называется тоже самое (там же). Как я могу убедиться, что моя локальная конфигурация не перезаписана и не проверена?

Пока я здесь, отличается ли ответ для каталога?

Я использую Tortoise SVN, но ответы из командной строки классные.

Спасибо!

[Извините, если этот основной вопрос был задан ранее ... Я посмотрел, но не нашел его.]

Ответы [ 9 ]

11 голосов
/ 28 августа 2009

TortoiseSVN предлагает хороший ответ для половины этой проблемы: ignore-on-commit

Это предотвращает случайное внесение изменений «только локальным», но не решает проблему случайного обновления локально измененного файла.

Ознакомьтесь с этой записью в блоге, чтобы узнать, как:

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

5 голосов
/ 24 октября 2008
  1. исключить его из хранилища с помощью svn: ignore (сначала вам придется удалить его из хранилища)
  2. сохранить копию в config.conf.default со значениями-заполнителями. Вы можете сохранить копию по умолчанию в хранилище.
  3. используйте config.conf как обычно - Subversion больше его не увидит
4 голосов
/ 24 октября 2008

Спасибо всем. Я думал, что Эоин может быть сумасшедшим, но на самом деле это правда. Вы не можете игнорировать файл, который находится в управлении версиями.

Согласно документам о черепахе

Игнорирование версионных предметов

Версионные файлы и папки никогда не могут быть проигнорированным - это особенность Subversion. Если вы версировали файл ошибка, прочитайте раздел под названием «Игнорировать файлы, которые уже версиями »для получения инструкций о том, как «Инверсия» это.

А из документов SVN

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

Ответ: не кладите этот файл под контролем версий. Вместо этого, положить шаблон файла по версии control, что-то вроде "file.tmpl".

Затем, после начального 'svn Checkout », есть ваши пользователи (или ваши построить систему) сделать нормальную копию ОС шаблон с правильным именем файла, и попросите пользователей настроить копию. файл не версионный, поэтому он никогда не будет быть преданным. И если вы хотите, вы можете добавить файл в его родительский каталог SVN: игнорировать свойство, поэтому оно не показываться как '?' в статусе svn команда.

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

Спасибо всем за ваши ответы.

3 голосов
/ 24 октября 2008

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

  • Переименуйте его (возможно, напишите сценарий оболочки в mv config.conf config.conf.theirs && mv config.conf.mine config.conf и запустите ваше приложение)
  • Переместите это. Может быть, добавить некоторую логику в ваше приложение, которое проверяет config.conf в локальном пользовательском каталоге, а затем использует config.conf по умолчанию, если ничего не найдено
3 голосов
/ 24 октября 2008

Вы можете добавить атрибут svn-ignore: в свою локальную папку, исключая config.conf или даже * .conf

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

1 голос
/ 24 октября 2008

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

Во-первых, вы создаете конфигурацию по умолчанию, которая, вероятно, имеет наивные значения, которые не будут работать для 90% установок, но дает вам ссылку на то, какие значения есть, и что можно реально настроить. Этот сценарий обычно называется «config.default.php» или что-то в этом роде. В нижней части этого сценария есть что-то мелодичное:

if (file_exists("config.php")) require "config.php";

Простая логика. Если для файла конфигурации есть пользовательское переопределение, загрузите его и дайте ему переопределить все, что ему нужно. Затем просто оставьте этот пользовательский конфигурационный файл игнорируемым с помощью методов, уже описанных на всех машинах разработки, и на любых рабочих машинах, которые по какой-либо причине сохраняют svn checkout. Это очень гибкая настройка, и аналогичные процедуры могут быть установлены для большинства языков / сред.

1 голос
/ 24 октября 2008

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

Как это:

/ workdir / configuration [ссылка на / workdir / conf_local]
/ workdir / conf_local [обновлять локальную конфигурацию, но не переопределяет мои настройки]
/ workdir / conf_remote [всегда обновляется удаленными данными, поэтому я могу зафиксировать изменения]

1 голос
/ 24 октября 2008

Игнорирование файла должно вам помочь:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html

0 голосов
/ 07 января 2010

как указал Scrappydog

Вы можете использовать / создавать различные списки в диалоговом окне фиксации.

поддерживает список ignore-on-commit , поэтому файлы в этом списке не будут видны ..

для получения подробной информации см. ссылку на этот блог .

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

...