46

プロジェクト構造を持つ svn リポジトリがあります。

/root/projectA/trunk
/root/projectA/branches
/root/projectA/tags

/root/projectB/trunk
/root/projectB/branches
/root/projectB/tags 

projectA のクローンを作成します。私が実行すると:

git svn clone -r <revision number>:HEAD <url>/root/projectA

エラーは発生せず、新しい projectA ディレクトリの下に git リポジトリが作成されます。ただし、ディレクトリは空です。私は何かを逃していますか?

4

8 に答える 8

28

以下のコマンドは仕事をしました:

  git svn clone -r HEAD <url>/root/projectA 
于 2012-08-16T15:03:06.377 に答える
15

このauthors-fileオプションを指定した場合、指定された作成者ファイルにルックアップ値がない作成者が検出されると、完全git svn clone停止します。注意を怠ると、これに対する git の「アラート」は、リポジトリのクローン作成が完了したように見え、プロセスが完了していないことを示していない可能性があります。リポジトリのディレクトリは、.git 以外は空になります。

不足している作成者を追加してから、正確なコマンドを再実行すると、git は停止したところから続行します。

于 2016-03-22T19:17:05.677 に答える
2

私は同じ問題を抱えていましたが、 --no-metadata 引数を使用して解決しました。あなたの場合、これは

git svn clone -r <revision number>:HEAD <url>/root/projectA --no-metadata
于 2013-08-04T14:27:42.677 に答える
1

私の場合、クローン操作が正しく完了していませんでした。git svn cloneチェックアウトの途中で失敗します。問題を修正すると、クローン操作後に自動的にチェックアウトが行われ、空のフォルダーがなくなりました。

[更新] これが私の場合に機能したものです。

私の試みgit svn clone --preserve-empty-dirs <repo>は失敗しました。ネットを精査した後、https://www.semitwist.com/articles/article/view/the-better-svn-git-guideを見つけました。

この部分はちょっと面倒です。v1.7.7 以降、Git には --preserve-empty-dirs があります。問題は、いまいましいものが壊れていることです。そのまま使用しようとすると、操作全体が途中で失敗する可能性があります。修正する必要があります。

まず、git-svn ファイルを見つけます。

$ 検索 / 2> /dev/null | grep git-svn

$ find 2>/dev/null / -type f | grep -l "ストリップに失敗しました"

私の場合、それは /usr/libexec/git-core/git-svn にありました。

注: git-svn にはもうありません (少なくとも git 2.7.0 にはありません)。で見つけました/usr/lib/perl5/vendor_perl/5.22/Git/SVN/Fetcher.pm

お気に入りのエディターでターゲット ファイルを開きます。

sudo <your-favorite-editor> path/to/file

さて、この git-svn ファイルで、 を検索しdie "Failed to strip pathます。([お使いの git のバージョンによっては] 4583 行目の近くにある [可能性があります]。変更しdieprint保存します。git-svn は修正されました。

git svn clone --preserve-empty-dirs <repo>期待どおりに動作するはずです。

于 2016-03-04T02:30:49.247 に答える
1

HTTP または HTTPS トランスポートを使用する場合 (つまり、リポジトリ URL が HTTP[s] で始まる場合)、有効なSVNユーザー名を提供する必要があります。

git svn clone -s https://svn.example.com/root/projectA --username <SVN username>

-s は --stdlayout のエイリアスです

ただし、 --username オプションを指定する必要があったのは 1 回だけで、その後の呼び出しはそれがなくても機能しました。ユーザー名をキャッシュしていると思います。

于 2014-11-05T10:35:53.080 に答える
0

これが機能しているかどうかを確認できませんでしたが、試してみてください。

git svn clone --stdlayout <url>/root/projectA/
于 2012-08-15T09:12:20.107 に答える