SVN Atomic совершает с практическими рекомендациями - PullRequest
8 голосов
/ 03 мая 2009

Где я: командная строка Linux

Проблема у меня сейчас:

Иногда я не мог сделать атомарные коммиты (состоящие из всех модификаций, требуемых для одного конкретного тикета / задачи), потому что у нас есть несколько файлов в хранилище, содержание которых варьируется в локальных средах разработки.

Например: database.xml (имя_базы, имя пользователя, пароль и т. Д.). Я изменяю этот файл в своей локальной среде, и каждый раз, когда мне нужно сделать коммит / регистрацию, я вручную перечисляю все необходимые файлы / папки для фиксации (за исключением локально измененных файлов).

Возможно, это неправильное проектное решение, и database.xml необходимо удалить из репозитория и изменить на database.xml.template (хранится в SVN), поэтому этот файл не будет включен для фиксации, пока вы не выполните svn add вручную. для этого? Возможно, это неправильный подход - хранить всю эту зависящую от среды информацию в репозитории - в этом случае мы можем сломать все, передав измененную конфигурацию, например ..

Насколько я понимаю, свойство svn:ignore не может помочь в этой ситуации, потому что его можно использовать только для файлов, которые не хранятся в хранилище.

Как решить эту проблему?

P.S .: Я использую Ubuntu и в основном чистую командную строку для SVN.

Ответы [ 3 ]

8 голосов
/ 03 мая 2009

«Стандартная» процедура для этого примерно такая (простив синтаксис SVN, я недавно использовал Bazaar ):

echo config > database.xml.template
svn add database.xml.template
svn ignore database.xml
svn commit

Затем на машине разработки каждого человека:

svn checkout
cp database.xml.template database.xml
...edit database.xml...

И когда они совершают,

echo foo > someotherfile
svn commit

файл database.xml не будет добавлен в Subversion.

6 голосов
/ 03 мая 2009

Вы должны хранить шаблон в хранилище, но не фактический файл, который вам нужно изменить локально.

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

И нет, svn: ignore вам здесь не поможет.

0 голосов
/ 11 августа 2014

Мои 2 цента: Прежде всего вам необходимо убедиться, что есть какой-либо (простой) способ согласовать ваши пути для всех разработчиков, вовлеченных в ваш проект. Это может быть та же относительная структура каталогов или некоторый тонкий слой в вашем приложении, который поддерживает некоторые оболочки или такие как $ home,% USERPROFILE% и т. Д. Это было бы намного удобнее с течением времени, чем позволить каждому разработчику работать со своей собственной версионной конфигурацией это то, что IDE тоже пытаются предоставить.

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

...