SVN: Как мне поддерживать свой локальный файл config.blah?

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

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

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

Спасибо!

[Извините, если этот основной вопрос уже задавался... Я искал, но не нашел.]


person Dan Rosenstark    schedule 24.10.2008    source источник
comment
Очень полезный вопрос. Ужасный ответ. Почти полностью отключил меня от SVN! Как они могли не разрешить файлы конфигурации?? Шаблонный ответ неприемлем, поскольку файлы могут находиться на много уровней ниже во многих разных деревьях каталогов, и изменять их для каждого программиста нецелесообразно.   -  person Bill K    schedule 18.11.2008
comment
У меня проблема с asp.net и web.config. В этом случае перемещение файла невозможно, так как .NET требует, чтобы он находился в корневом каталоге веб-сайта. Очень назойливый!   -  person Adam Pope    schedule 11.12.2008


Ответы (9)


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

  • Переименуйте его (возможно, напишите сценарий оболочки в mv config.conf config.conf.theirs && mv config.conf.mine config.conf, а затем запустите приложение)
  • Подвинь это. Возможно, добавьте в свое приложение некоторую логику, которая проверяет наличие config.conf в локальном пользовательском каталоге, а затем использует config.conf по умолчанию, если ничего не найдено.
person Ryan    schedule 24.10.2008

У TortoiseSVN есть хороший ответ на половину этой проблемы: игнорирование при фиксации

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

Прочтите этот пост в блоге, чтобы узнать, как:

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

person Scrappydog    schedule 27.08.2009
comment
Потрясающий. Я думаю, что черепаха, вероятно, единственная программа, по которой я сейчас скучаю, так как я на OS X, но мы все равно переходим на GIT :) - person Dan Rosenstark; 28.08.2009
comment
приятно видеть, что ссылка на собственный блог используется для ответа. спасибо @Scrappydog - person Baljeetsingh; 13.12.2018

  1. исключить его из репозитория с помощью svn:ignore (сначала вам придется удалить его из репозитория)
  2. сохраните копию в config.conf.default со значениями-заполнителями. Вы можете сохранить копию по умолчанию в репозитории.
  3. используйте config.conf как обычно - subversion его больше не увидит
person Ken    schedule 24.10.2008

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

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

Игнорирование версионных элементов

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

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

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

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

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

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

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

person Dan Rosenstark    schedule 24.10.2008

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

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

person Eoin Campbell    schedule 24.10.2008

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

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

person JtR    schedule 24.10.2008

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

Нравится:

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

person Joshi Spawnbrood    schedule 24.10.2008

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

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

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

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

person Matthew Scharley    schedule 24.10.2008
comment
Прохладный. На самом деле это для PHP-разработчика, поэтому ваш ответ может сработать для нас. - person Dan Rosenstark; 24.10.2008

как указал Scrappydog

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

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

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

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

person Baljeetsingh    schedule 07.01.2010