我目前正在将phpfog视为一个由小团队维护的大量应用程序的平台。我喜欢git,并且非常喜欢他们让你通过git推送到phpfog平台。
我正在寻找托管的应用程序目前都在SVN中受版本控制。不幸的是,由于我无法控制的许多无聊的原因,这种情况无法改变。
我正在尝试找到一个好的工作流程,以允许此SVN存储库和phpfog平台之间的持续集成。本质上,构建服务器应检查SVN中是否有修改,如果是,则将其拉下来,然后使用更改git push
到phpfog。我有一个安装了git和svn的构建服务器,但我遇到了一些问题。
到目前为止,我尝试过的主要事情是在svn repo上做git svn clone
,将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克隆空的repo并尝试在repo中做某种git svn clone
,但这似乎也没有用。
这样做的最佳方式是什么?
答案 0 :(得分:1)
我不确定这是不是最好的方法,但这是你可以试试的。如果你纯粹部署到PHPFog并且不使用那个repo进行版本控制,你可以尝试每次强制推送。
git push --force
答案 1 :(得分:1)
考虑使用SubGit。
如果您可以本地访问Subversion存储库,则可以将SubGit安装到其中:
$ subgit install $SVN_REPOS
之后,您将获得$ SVN_REPOS / .git Git存储库,并且它会与初始SVN存储库持续同步。您可以像往常一样使用创建的Git存储库。
提交到SVN的每个新修订版都会自动转换为适当的Git提交,反之亦然,SubGit会将每个推送的Git提交转换为相应的SVN修订版。
在SubGit documentation上查看更多信息。