2017-04-12 15 views
3

SVNコードをインポートする簡単な方法を探しています(ブランチ/タグとトランクを含むSVNフォルダ構造には、.svnフォルダがありませんしたがって履歴やSVNユーザーなどは含まれません)。 .svnフォルダを持たず、元のSVNリポジトリにアクセスできないレガシーSVNコードを持っているだけです。SVNフォルダ構造を履歴とユーザのないGit Repoにインポート

+0

'.svn'ディレクトリは、ローカルの変更を検出するのに十分なデータしか含んでいないので、実際のリポジトリなしではまったく役に立たないことに注意してください。それ以外のものはリポジトリ内にのみ存在します(ただし、URLを知っていればおそらくそれにアクセスします)。 –

+0

ありがとう1月私のオプションは、この既存のフォルダ構造を使用してローカルSVNリポジトリを作成し、svn-gitユーティリティをGitにインポートしようとしていますか?とにかく私は歴史/ユーザーなどを心配していません。 – dchucks

+1

Subversionはあなたに一番小さなビットを手助けするつもりはありません!まるで新しいプロジェクトを開始したかのようにgitでインポートしてください。私は答えにコマンドを書きます。 –

答えて

1

さて、あなただけの歴史のない最新バージョン、あなたは、単に新しいコードなどのgitにインポートされてできる最善を持っている場合。

ブランチとタグの関係がわからないので、それぞれを別々のルートとしてインポートするか、以前のバージョンに基づいて各リリースのような明白なプロパティからリレーションシップを再構築することができます。

だからあなただけの各ブランチ/タグに、あなたを空のgitリポジトリを作成して:

  1. は、適切なブランチを準備します。

    • 新しいリポジトリは、ブランチmasterで始まり、親はありません。ここではtrunkをインポートしますが、その前に知っているタグをインポートしてください。
    • git checkout -bnew-nameベースを使用して、既知のベースから新しいブランチを作成します。たとえば、特定のブランチが特定のリリースに基づいていることがわかっている場合などです。
    • git checkout --orphan新しい名前を使用して、親なしで新しいブランチを作成します。ブランチの基になっているものがわからない場合git-checkoutを参照してください。 SVNのブランチ/タグの内容を超えるgit rm -rf .

    • コピー:

  2. は、以前の内容を削除します。

  3. git add .

  4. がコミットすべてを追加します。git commit -mメッセージを。

  5. すすぎ、完了するまで繰り返します。

関係を気にしない場合は、このスクリプトを簡単に記述できます。いくつかの履歴を再構築する場合は、そのマスターがリリース3に成功し、それがリリース2とリリース1に成功すると、ブランチを手動で順序付けして選択する必要があります。

また、各ディレクトリ内に単にgit init + git add . + git commitを可能性があり、適切な名前の下で同じ中央リポジトリにそれぞれをプッシュし、それはあなたがどんな歴史を再構築させません。

1

.svnディレクトリには、プロジェクトで最後にチェックアウトされたファイルが含まれています。概念的には、GitのHEADが指し示すコミットの内容のようなものです。 Subversionは、この情報を使って、どのファイルが変更されたかを知り、その違いを表示し、最後に更新された(チェックアウトされた)バージョンに戻します。

Subversionリポジトリにアクセスできないため、.svnディレクトリのコンテンツはほとんど役に立たなくなります。

は、プロジェクトの実行のルートディレクトリに、そして .svnディレクトリを削除します。

git init 
git add . 
git commit -m "the initial import" 

はあなたが好きなコミットメッセージをテキスト「最初のインポート」を交換してください。

Gitのコマンドについて詳しく読む: https://git-scm.com/docs

+0

ありがとう@axia。実際にこれは私がやったことですが、私のGitの "master"はタグとトランクフォルダを持っています(私たちはブランチコードを提供していませんでした)。私は "trunk"をマスタに変換し、SVNタグフォルダをGitタグに移動する方法を望んでいましたが、コンテキスト情報がなくても(タグはどのブランチから作成されたのでしょうか?)、おそらくあまり役​​に立たないでしょう。 – dchucks

+0

Err ..リポジトリには "trunk"と "tags"ディレクトリがありますが、それらを作業ディレクトリに置くべきではありませんが、私が覚えている限り、これは使うべき方法ではありません。とにかく、あなたのコードは "trunk"ディレクトリになければなりません。このディレクトリの内容だけを残し、そこから新しいGitリポジトリを作成してください。 – axiac

関連する問題