簡體   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