繁体   English   中英

使用git作为svn中管理的代码库的部署机制?

[英]Using git as a deployment mechanism for a codebase managed in svn?

我目前正在将phpfog视为由一个小团队维护的一堆应用程序的平台。 我喜欢git,真的很喜欢它们让您通过git推送到phpfog平台的事实。

我正在寻找托管的应用程序当前都在SVN中受版本控制。 不幸的是,由于许多无聊的原因,我无法控制,这无法改变。

我正在尝试找到一个好的工作流程,以允许在此SVN存储库和phpfog平台之间进行持续集成。 本质上,构建服务器应该检查SVN中是否有修改,如果有,则将其删除,然后使用git push进行更改并git push送到phpfog。 我有一个既安装了git又安装了svn的buildserver,但是遇到了一些问题。

到目前为止,我已经尝试过的主要方法是在svn存储库上进行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克隆了空的仓库,然后尝试将某种git svn clone到仓库中,但这似乎也不起作用。

最好的方法是什么?

我不确定这是否是最好的方法,但是您可以尝试以下方法。 如果您纯粹是部署到PHPFog而不是使用该仓库进行版本控制,则可以尝试每次强制执行推送。

git push --force

考虑使用SubGit

如果您可以本地访问Subversion存储库,则可以在其中安装SubGit:

    $ subgit install $SVN_REPOS

之后,您将获得$ SVN_REPOS / .git Git存储库,该存储库将与初始SVN存储库连续同步。 您可以照常使用创建的Git存储库。

提交到SVN的每个新修订都会自动转换为相应的Git提交,反之亦然,SubGit会将每个推送的Git提交转换为相应的SVN修订。

请参阅SubGit 文档中的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM