Поддержите набор локальных фиксаций, работающих с мерзавцем-svn

Я использую мерзавца для разработки против проекта, размещенного в подверсии, с помощью мерзавца-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 изменениями.

5
задан benizi 5 March 2010 в 06:58
поделиться

4 ответа

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

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

1
ответ дан 15 December 2019 в 06:24
поделиться

Не совсем ответ git на ваш вопрос, но, тем не менее, полезный:

В кругах django стандартной практикой является включение подключений к базе данных и т. Д. В локальный файл, которого нет в репозитории, называется localsettings.py

. Этот файл уникален для каждой среды, в которой вы развертываете; Это помогает включить файл примера с репозиторием, скажем, localsettings.py.example

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

0
ответ дан 15 December 2019 в 06:24
поделиться

Я использую 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)

0
ответ дан 15 December 2019 в 06:24
поделиться

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

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

(и, естественно, создать для него сценарий оболочки)

Я только начал использовать это в проекте, и у этого метода могут быть недостатки.

2
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: