簡體   English   中英

自動將Git同步到SVN

[英]Automatically sync Git to SVN

摘要:

我要完成的工作是定期將裸露的 Git存儲庫推送到Subversion中,以便其他人可以使用無人值守的腳本對其進行檢查。 我不需要相反的方向,SVN-> Git。

我希望有人能幫助我完成這項工作。 我見過的其他線程太接近我所需要的了,但是沒有一個線程有完整,合理的解決方案。 將現有的git存儲庫推送到SVN非常有用。

我的問題:

我的雇主維護着一個Subversion服務器,該服務器具有異地備份,冗余和可通過Web界面訪問,因此我的同事和經理可以進行臨時審核。

我在Git下有六個項目。 (我有多台計算機,我進行了大量推測性分支,並且我經常提交。而且,Xcode與Git配合使用效果更好。我們的SVN管理員同意,Git對我來說幾乎是不可商議的。)所有工作副本都在跟蹤的台式機(由我的老板及其駐地擁有)上的裸回購。

我的老板真的希望我不這樣做; 如果他可以提供IT級的Git服務器,他會的。 他的妥協是,我找到一種方法來launchd任務( cron ),以將桌面的裸機Git存儲庫同步到SVN服務器上的並行存儲庫。

我建議的方法(可能不令人滿意):

我還沒有找到將裸Git倉庫克隆到Subversion的任何指南,更不用說無人值守了。 我的猜測是,我必須通過工作副本來完成所有工作,而SVN同步(但可能不是自動化)是可以解決的問題。

我的天真過程是:

  1. 從裸倉庫克隆從未被編輯為/dont-touch的工作副本。
  2. 在no-edits /dont-touch目錄中時, git svn init <svn-url> -s
  3. 進行必要的git svn fetchgit svn rebase跳舞。
  4. 每天晚上,每通過發射一個腳本launchd
    4.1。 cd /dont-touch
    4.2。 git fetch
    4.3。 git svn dcommit

我看到的問題是:

我無知

說夠了。

此類別包括我沒有想到的所有內容。

互動

我們希望我們可以進行設置,讓同步腳本每24小時觸發一次,然后忘記它。

我認為,在手動(1-3)設置期間,SVN身份驗證將在第一次通過后進行緩存並自行處理。 Git身份驗證不會成為問題,因為dont-touch工作副本將與裸倉庫由同一用戶擁有,並且可以通過file:///

但是,我將Git同步到SVN的印象是它很脆弱,並且需要交互式的壓區和縫隙來避免損壞SVN回購,更不用說使其正常工作了。

您可以看看SubGit作為git-svn的替代品。 從2.0開始,它允許將本地Git與遠程Subversion存儲庫鏈接。 您運行一次:

$ subgit configure --svn-url <URL_of_SVN_project_root> repos.git
# edit repos.git/subgit/config, repos.git/subgit/authors.txt, and repos.git/subgit/passwd

$ subgit install repos.git
# now just work with repos.git as with usual git repository, but prefer "git pull --rebase" rather that "git pull" and "git merge --no-ff" rather than "git merge"

其中URL_of_SVN_project_root是包含主干/分支/標簽目錄的URL。

然后克隆存儲庫'repos.git'並從中推入/拉入(可選地以這種方式設置工作副本git config)。 'repos.git'中的特殊Git鈎子會將其與SVN同步。 請注意,當前SubGit 2.0處於eap階段,但我認為您描述的git-svn設置更加可靠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM