3

プロジェクトのリビジョン管理ソフトウェアとしてgitを使用しています。私のプロジェクトでは、リビジョン管理ソフトウェアにSVNを使用するサードパーティ コード ライブラリを使用する必要があります。(この場合、サードパーティのコードはYiiと呼ばれる PHP フレームワークであり、質問とはあまり関係ありません)。

外部SVNリポジトリからコードを取得して最新の状態に保つのに役立つ外部依存関係を git に設定する方法はありますか?

私のプロジェクトが SVN を使用していた場合、次のようにするだけなので、セットアップは簡単です。

> svn propset svn:externals yii-1.1.6 https://yii.googlecode.com/svn/tags/1.1.6/framework

svn checkout...そして、 (または) を実行するたびにsvn update、yii コードベースを " yii-1.1.6" というローカル フォルダに吸い込みます。gitで同様のことを行うことはできますか? 私がコピーできるパブリック github リポジトリの例を誰かが持っていますか? 私はそれが共通の必要性であるに違いないと確信していますか?

4

3 に答える 3

6

svnリポジトリのgit-svnクローンを作成し、そのリポジトリをメインのGitリポジトリに含めて、サブモジュールとして宣言することができます。

覚えておいてください:gitサブモジュールはsvnサブモジュールと互換性がありません、常に固定バージョンを参照するという点で。見る:


ただし、「git submodule最新の追跡」で述べたように、git 1.8.2(2013年3月)以降、サブモジュールを介してリポジトリのブランチの最新を追跡できます。

$ git submodule add -b <branch> <repository> [<path>]
$ git submodule update --remote ...
于 2011-03-17T20:50:04.263 に答える
3

また、SVN でサード パーティのライブラリをツリーにチェックアウトし、メイン プロジェクトに (すべての .svn サブディレクトリを含めて) git add することもできます。

ちょっと汚いだけでなく、シンプルで簡単です。

更新する必要がある場合は、svn update と git commit だけです。

于 2011-05-26T16:12:40.180 に答える
0

私も職場で全く同じ状況です。SmartGit を使用しています。Git リポジトリのルート (Git にコミット) に .gitsvnextmodules ファイルがあります。

[submodule "anyString"]
        path = path/to/svn/submodule
        url = https://url.of.svn/repository/blah
        revision = 1234
        branch = branches/branch #or it can be "trunk"
        fetch = trunk:refs/remotes/svn/trunk
        branches = branches/*:refs/remotes/svn/*
        tags = tags/*:refs/remote-tags/svn/*
        remote = svn
        type = dir

SmartGit は、リビジョン 1234 で "https://url.of.svn/repository/blah/branches/branch" (連結された URL + ブランチ値) を指すサブモジュールとして表示します (指定されていない場合は、HEAD リビジョンが使用されます)。fetch+branches+tags は .git/config 仕様のようなものです。

サードパーティ プロジェクトのブランチをすばやく切り替えたくない場合 (サブモジュールにもコミットしたいので切り替えます)、代わりにこのようなものを使用します。

[submodule "alternativeSubmodule"]
        path = path/to/svn/submodule
        url = https://url.of.svn/repository/blah/branches/branch
        revision = 1234
        branch = /
        fetch = :refs/remotes/svn/git-svn
        remote = svn
        type = dir

詳細については、 .gitsvnextmodules仕様を参照してください。

この構成では、SmartGit は通常の Git サブモジュールと同じようにサブモジュールと連携します。

于 2012-05-12T23:27:52.383 に答える