2011-12-05 8 views
2

SVNはsvn:external機能を介して外部ソースリンクを提供しています。そして私はGitリポジトリからモジュールを使用しています。このGitリポジトリを外部ソースとして使用できますか?gitリポジトリをsvn:externalとして使うには?

私のモジュールGitリポジトリはGithubにあります。だからGithub特定の方法も歓迎です。

答えて

0

ただ、このURLを使用してのGitHubからtarボールやzipballをフェッチ:

https://github.com/UserName/ProjectName/zipball/master 

それとも、tarballを好む場合:

https://github.com/UserName/ProjectName/tarball/master 

彼らはコードのスナップショットです、アップzip形式。

+0

しかし、あなたはGitリポジトリの現在のバージョンを手に入れません。それは、SVNチェックアウトからGitリポジトリに戻る方法ではなく、単なる1つの方法です。 – mliebelt

+0

ジップボールは、実際には、ここ数分以内に加えられた変更を反映して、かなり最新です。私はあなたがダウンロードを初期化し、コミットの間にキャッシュするときに生成されると思います。 – Blender

+0

しかし、これは数ヶ月続くもので、 'svn:externals'で外部リソースをバインドした場合に行われる' svn update'を実行しても更新されません。 – mliebelt

3

GithubはSVNサポートを発表しました。 https://github.com/blog/626-announcing-svn-support

Githubリポジトリにsvn:externalを直接追加しました。

+0

これは、トランク/ブランチ/タグディレクトリのディレクトリが多すぎるという問題です。たとえば、特定のディレクトリをプルダウンするだけです。 'svn co -N [repo]'と 'svn up trunk'ですが、あなたはまだ私には役に立たない道に「トランク」が残っています – icc97

2

GithubのリポジトリはSubversionリポジトリのように動作します。 this blog post about their improved SVN supportを参照してください。それは非常に遅いようですが、それは動作します。

gitリポジトリをSVNリポジトリに配置するもう1つの方法は、ネストされたリポジトリディレクトリに対してsvn:ignoreを設定し、Makefileを使用してgitリポジトリを複製および更新することです。

cd svn-repository 
svn propset svn:ignore gitdir . 

次に、Makefileまたは他のビルドシステムにこのようなことをしてください。

GITREPO=git://github.com/schwern/perl5i.git 
GITDIR=gitdir 

all : $(GITDIR) 

$(GITDIR)/.git : 
    git clone $(GITREPO) $(GITDIR) 

$(GITDIR) : $(GITDIR)/.git 
    cd $(GITDIR) && git pull 

最初にmakeを呼び出すと、gitリポジトリがクローンされます。その後の呼び出しで更新が行われます。

私はこのソリューションがより好きです。 Githubにあるgitリポジトリに依存せず、エミュレーションに依存しません。 gitリポジトリは、gitリポジトリとして動作することができます.gitとSVNの間のコンフリクトが問題を引き起こす可能性があるエミュレーションを経由する必要はありません。

関連する問題