Использование git в качестве механизма развертывания для кодовой базы, управляемой в SVN? - PullRequest
0 голосов
/ 17 февраля 2012

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

Все приложения, которые я смотрю на хостинге, в настоящее время контролируются версиями в SVN.К сожалению, это не может измениться, по многим скучным причинам, которые я не могу контролировать.

Я пытаюсь найти хороший рабочий процесс, чтобы позволить непрерывную интеграцию между этим SVN-репозиторием и платформой phpfog.По сути, сервер сборки должен проверить, есть ли какие-либо изменения в SVN, если это так, затем сбросить их, а затем выполнить git push изменения в phpfog с изменениями.У меня есть buildserver, на котором установлены и git, и svn, но я сталкиваюсь с некоторыми проблемами.

Главное, что я до сих пор пробовал, это сделать git svn clone в репозитории svn, добавить phpfogв качестве пульта, а затем подталкивая к этому.Однако это не сработает так:

$ git push phpfog master
To git@git01.phpfog.com:example.phpfogapp.com
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@git01.phpfog.com:example.phpfogapp.com'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Я думаю, проблема в том, что у phpfog есть репозиторий git, который я должен сначала клонировать, и все же git svn создает свой собственный репозиторий.

Я попробовал это наоборот, клонировал пустой репо из phpfog и попытался затем сделать что-то вроде git svn clone в репо, но это тоже не сработало.

Что такоелучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Рассмотрите возможность использования SubGit .

Если у вас есть локальный доступ к вашему хранилищу Subversion, вы можете установить в него SubGit:

    $ subgit install $SVN_REPOS

После этого вы получите $SVN_REPOS / .git Git-репозиторий, и он постоянно синхронизируется с исходным SVN-репозиторием.Вы можете работать с созданным Git-репозиторием как обычно.

Каждая новая ревизия, зафиксированная в SVN, автоматически переводится в соответствующую Git-фиксацию, и наоборот, SubGit транслирует каждую отправленную Git-фиксацию в соответствующую SVN-ревизию.Дополнительную информацию смотрите в документации SubGit .

1 голос
/ 17 февраля 2012

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

git push --force
...