1

git-svn を使用してリモート SVN リポジトリを操作したいと考えています。でダウンロードしようとしましたgit svn clone -s REPO_URLが、ネットワーク接続が良くなく、レポが非常に大きいため、タイムアウトします。

そのため、代わりに、SVN クライアントを使用してリポジトリ全体をチェックアウトし、事後に git-svn を使用する予定です。しかし、それは可能ですか?git svn clone -sはすべてのことを処理します (つまり、リモート URL の設定、履歴のインポート、リモート ブランチの識別など)。上。

4

2 に答える 2

2

ああ、SVN クライアントは必要ないようです。ここで詳しく説明されているように、中断されたgit svn cloneは を使用して再開できます。:)git svn fetch

または、リポジトリの全履歴を取得する必要がない場合は、代わりに実行することでダウンロードを高速化できます。これにより、特定のリビジョン番号 ( ) から最新のコミット ( ) までgit svn clone -s -rN:HEAD repo_url local_dirのリポジトリのみがクローンされます。これにより、SVN サーバーからダウンロードする必要があるデータの量が大幅に削減されます。NHEAD

そのため、大規模なリポジトリを処理する問題は解決されます。しかし、ディスクにダウンロードされたリポジトリで git-svn を動作させる方法についての私の質問に答えるために、file://プロトコルを使用してクローンを作成できます。例: git svn clone file:///path/to/repo/.

于 2013-01-17T04:49:07.927 に答える
0

git-svnが実行する魔法は、リビジョンごとにSubversionリポジトリをダウンロードすることです。つまり、通常のGitリポジトリの場合と同様に、ローカルマシンで完全なリポジトリ履歴を取得できます。また、リビジョン番号やコミットログテキストなど、各コミットに関する大量のメタデータを取得します。

wget(または、より明らかに)を使用してSubversionリポジトリをダウンロードするだけの場合svn export、そのすべての情報を入手することはできず、それを取得するための適切な方法もありません。

ローカルリポジトリに完全な履歴が必要ない場合は、最新のリビジョンのクローンを作成できます。git svn init代わりに実行しgit svn cloneます(たとえば、同じレイアウト引数を指定します-s)。次に、を実行しgit svn fetch -r HEADます。これにより、リモートのSubversionリポジトリの最新リビジョンのみがダウンロードされ、その上に履歴が作成されます。

于 2013-01-17T11:04:44.250 に答える