3

概要:

私が達成したいことは、裸のGit リポジトリを定期的に Subversion にプッシュして、無人のスクリプトを使用して他の人がそれを調べられるようにすることです。反対方向、SVN -> Git は必要ありません。

誰かがこれを成し遂げるのを手伝ってくれることを願っています。私が見た他のスレッドは、私が必要とするものに非常に近いですが、完全でもっともらしい解決策を持っているものはありません. 既存の git リポジトリを SVN にプッシュすることは非常に役に立ちました。

私の問題:

私の雇用主は、オフサイト バックアップがあり、冗長性があり、Web インターフェースからアクセスできる Subversion サーバーを維持しているため、同僚やマネージャーは簡単なレビューを行うことができます。

Git の下に 6 つのプロジェクトがあります。(私は複数のマシンを持っており、多くの投機的分岐を行っており、頻繁にコミットしています。また、Xcode は Git との相性が良いです。当社の SVN 管理者は、Git は私にとって交渉の余地がほとんどないことに同意しています。)すべての作業コピーが追跡する私のデスクトップ マシン (私の雇用主が所有し、その敷地内にある) 上の裸のレポ。

私の雇用主は、私がそうしないことを本当に望んでいます。彼が IT グレードの Git サーバーを提供できれば、そうするでしょう。彼の妥協点は、デスクトップの裸の Git リポジトリを SVN サーバー上の並列リポジトリに同期するlaunchd( ) タスクを取得する方法を見つけることです。cron

私の提案したアプローチ(おそらく不十分):

裸の Git リポジトリを Subversion にクローンするためのガイドは見つかりませんでした。私の推測では、作業コピーを介してすべてを行う必要があり、SVN 同期 (自動化ではない可能性があります) は解決済みの問題です。

私の素朴なプロセスは次のとおりです。

  1. に編集されていない/dont-touch作業コピーをベア リポジトリから複製します。
  2. 非編集/dont-touchディレクトリにいる間、git svn init <svn-url> -s
  3. 必要なことgit svn fetchをしてgit svn rebase踊ってください。
  4. 毎晩、launchd4.1
    . cd /dont-touch
    4.2. git fetch
    4.3.git svn dcommit

私が見ているように、問題は次のとおりです。

私は無知です

十分に言った。

このカテゴリには、私が思いもよらなかったことがすべて含まれています。

インタラクティブ性

これを設定し、同期スクリプトを 24 時間ごとに起動させて、忘れることができることを願っています。

SVN認証はキャッシュされ、最初に通過した後、手動(1-3)セットアップ中に自動的に処理されると思います。作業コピーはdont-touchベア リポジトリと同じユーザーが所有し、file:///.

しかし、Git を SVN に同期することについての私の印象は、脆弱であり、SVN リポジトリを損傷しないようにするために対話型のニップとタックが必要になるということです。

4

1 に答える 1

2

git-svn の代替としてSubGitを見たことがあるかもしれません。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 は、trunk/branches/tags ディレクトリを含む URL です。

次に、リポジトリ「repos.git」のクローンを作成し、そこからプッシュ/プルします (オプションで、この方法で作業コピーの git config をセットアップします)。「repos.git」の特別な Git フックは、SVN と同期します。現在、SubGit 2.0 は eap 段階にあることに注意してください。ただし、説明した git-svn セットアップの方が信頼性が高いと思います。

于 2012-12-01T00:04:33.207 に答える