Я использую мерзавца для разработки против проекта, размещенного в подверсии, с помощью мерзавца-svn:
git svn clone svn://project/
Мой общий рабочий процесс был к неоднократно редактированию-и-фиксации на основном ответвлении, затем соглашается на репозиторий SVN через:
git stash
git svn dcommit
git stash apply
Одна из локальных модификаций, которые 'прячут' команду, сохраняет, что я не хочу соглашаться на репозиторий SVN, поменявшая струна соединения с базой данных. Что наиболее удобный способ состоит в том, чтобы сохранить этим локальным изменением без дополнительных шагов 'притона'?
Я подозреваю, что что-то как 'притон' или 'стеганое одеяло' - то, что я ищу, но я все еще достаточно плохо знаком с мерзавцем, что я думаю, что пропускаю некоторую терминологию, которая привела бы к точному колдовству.
Обновление: единственное решение я нашел это, кажется, избегает git stash
+ git-svn action
+ git stash apply
ряд должен был обновить мерзавца-svn касательно вручную:
(check in local-only change to 'master', then...)
$ cat .git/refs/master > .git/refs/remote/git-svn
$ git svn fetch (with at least one new SVN revision)
И это оставляет локально-единственную фиксацию как странное (вероятно, небезопасной) фиксация между двумя svn изменениями.
Я должен согласиться, что реальное решение - не коммитить то, чему не место в репозитории. Я бы пошел к парню, которого вы пытаетесь убедить, и сказал ему, что вы хотите добавить механизм, с помощью которого вы можете переопределить свойства по умолчанию с помощью файла, который вы добавляете в свою локальную систему.
Не существует чистого способа решения конфликтов слияния, которые могут возникнуть, например, при переименовании свойства. Поэтому я думаю, что вы рассматриваете хак для плохо реализованного решения, и именно поэтому прямой ответ на ваш вопрос не будет выглядеть нехакерским.
Не совсем ответ git на ваш вопрос, но, тем не менее, полезный:
В кругах django стандартной практикой является включение подключений к базе данных и т. Д. В локальный файл, которого нет в репозитории, называется localsettings.py
. Этот файл уникален для каждой среды, в которой вы развертываете; Это помогает включить файл примера с репозиторием, скажем, localsettings.py.example
. В противном случае, включите все файлы конфигурации репозитория и реализуйте инфраструктуру для запроса соответствующих файлов на основе имени хоста.
Я использую stg (который является quilt, но интегрирован с git) вместе с git svn.
У меня есть патчи в stg, которые исправляют систему сборки таким образом, что я не хочу посылать их вверх по течению - так что это похоже на ваш патч DB.
Чтобы применить патчи:
stg pop -a stg push patch-name-that-i-want-to-apply git svn dcommit
или для ребазирования в последнюю SVN:
git svn fetch stg rebase trunk (или как там называется ваша ветка svn)
Один из возможных подходов состоит в том, чтобы иметь «локальную» ветвь с модификациями только для локального использования и разветвлять от нее «рабочую» ветку. В этой настройке вы можете:
git checkout work
git checkout -b work_tmp
git rebase --onto master local work_tmp
git checkout master
git merge work_tmp
git branch -D work_tmp
git svn dcommit master
(и, естественно, создать для него сценарий оболочки)
Я только начал использовать это в проекте, и у этого метода могут быть недостатки.