СВН:Как мне сохранить локальный файл config.blah?

StackOverflow https://stackoverflow.com/questions/233441

  •  04-07-2019
  •  | 
  •  

Вопрос

На сервере 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

  1. исключите его из репозитория с помощью svn:ignore (сначала вам придется удалить его из репозитория)
  2. сохраните копию в config.conf.default со значениями-заполнителями.Вы можете сохранить копию по умолчанию в репозитории.
  3. используйте 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top