SVNコードをインポートする簡単な方法を探しています(ブランチ/タグとトランクを含むSVNフォルダ構造には、.svnフォルダがありませんしたがって履歴やSVNユーザーなどは含まれません)。 .svnフォルダを持たず、元のSVNリポジトリにアクセスできないレガシーSVNコードを持っているだけです。SVNフォルダ構造を履歴とユーザのないGit Repoにインポート
答えて
さて、あなただけの歴史のない最新バージョン、あなたは、単に新しいコードなどのgitにインポートされてできる最善を持っている場合。
ブランチとタグの関係がわからないので、それぞれを別々のルートとしてインポートするか、以前のバージョンに基づいて各リリースのような明白なプロパティからリレーションシップを再構築することができます。
だからあなただけの各ブランチ/タグに、あなたを空のgitリポジトリを作成して:
は、適切なブランチを準備します。
- 新しいリポジトリは、ブランチ
master
で始まり、親はありません。ここではtrunk
をインポートしますが、その前に知っているタグをインポートしてください。 git checkout -b
new-nameベースを使用して、既知のベースから新しいブランチを作成します。たとえば、特定のブランチが特定のリリースに基づいていることがわかっている場合などです。git checkout --orphan
新しい名前を使用して、親なしで新しいブランチを作成します。ブランチの基になっているものがわからない場合git-checkoutを参照してください。 SVNのブランチ/タグの内容を超えるgit rm -rf .
コピー:
- 新しいリポジトリは、ブランチ
- は、以前の内容を削除します。
git add .
がコミットすべてを追加します。
git commit -m
メッセージを。すすぎ、完了するまで繰り返します。
関係を気にしない場合は、このスクリプトを簡単に記述できます。いくつかの履歴を再構築する場合は、そのマスターがリリース3に成功し、それがリリース2とリリース1に成功すると、ブランチを手動で順序付けして選択する必要があります。
また、各ディレクトリ内に単にgit init
+ git add .
+ git commit
を可能性があり、適切な名前の下で同じ中央リポジトリにそれぞれをプッシュし、それはあなたがどんな歴史を再構築させません。
.svn
ディレクトリには、プロジェクトで最後にチェックアウトされたファイルが含まれています。概念的には、GitのHEAD
が指し示すコミットの内容のようなものです。 Subversionは、この情報を使って、どのファイルが変更されたかを知り、その違いを表示し、最後に更新された(チェックアウトされた)バージョンに戻します。
Subversionリポジトリにアクセスできないため、.svn
ディレクトリのコンテンツはほとんど役に立たなくなります。
.svn
ディレクトリを削除します。
git init
git add .
git commit -m "the initial import"
はあなたが好きなコミットメッセージをテキスト「最初のインポート」を交換してください。
Gitのコマンドについて詳しく読む: https://git-scm.com/docsありがとう@axia。実際にこれは私がやったことですが、私のGitの "master"はタグとトランクフォルダを持っています(私たちはブランチコードを提供していませんでした)。私は "trunk"をマスタに変換し、SVNタグフォルダをGitタグに移動する方法を望んでいましたが、コンテキスト情報がなくても(タグはどのブランチから作成されたのでしょうか?)、おそらくあまり役に立たないでしょう。 – dchucks
Err ..リポジトリには "trunk"と "tags"ディレクトリがありますが、それらを作業ディレクトリに置くべきではありませんが、私が覚えている限り、これは使うべき方法ではありません。とにかく、あなたのコードは "trunk"ディレクトリになければなりません。このディレクトリの内容だけを残し、そこから新しいGitリポジトリを作成してください。 – axiac
- 1. 履歴付GitへのSVN?
- 2. SVNから既存のGitプロジェクトへの履歴をインポート
- 3. SVNとGitリポジトリをすべての履歴と結合する
- 4. git(git-svn)内のファイルの不完全な履歴
- 5. フォルダ内のgitの履歴を表示
- 6. ディレクトリ構造をSVN Repoに追加
- 7. SVN:ユーザーチェックアウト履歴?
- 8. 履歴なしのgitブランチ
- 9. スカッシュgitの履歴
- 10. SVNとGITのコミット履歴とコードの差
- 11. createする方法GIT Server Repoと構造が異なるGIT Local Repo
- 12. git制御アプリケーションの1つのフォルダにsvn repoをプル
- 13. バイナリでいっぱいのgit repoで古い履歴を取り除く
- 14. git:リモートブランチ履歴をコピーする(.git/logsフォルダ)
- 15. SVNトランクのインポート時の履歴を失う
- 16. Git svn clone:改訂履歴のフェッチを延期する方法
- 17. 履歴データをレポートジェネレータのテストカバレッジ履歴にインポートするには
- 18. gitに変換するときにsvnのコピー履歴を保持する
- 19. 変更履歴:svn + latex
- 20. TFVCからgitへの移行、新しいgitディレクトリ構造とTFVCチェンジセット履歴の維持
- 21. ユーザのコマンドの履歴
- 22. Gitのクローン/ダウンロード履歴
- 23. 全体gitの履歴は
- 24. gitソース行の履歴
- 25. git p4クローンファイルの履歴(統合履歴を含む)
- 26. BFGでgitの履歴を消去
- 27. Chromeアプリ履歴のエクスポート/インポート
- 28. git-svnでインポートする際に冗長なrepoディレクトリを削除しますか?
- 29. Tortoise svnログ履歴リビジョンに戻す
- 30. 履歴なしのgitでプッシュコミット
'.svn'ディレクトリは、ローカルの変更を検出するのに十分なデータしか含んでいないので、実際のリポジトリなしではまったく役に立たないことに注意してください。それ以外のものはリポジトリ内にのみ存在します(ただし、URLを知っていればおそらくそれにアクセスします)。 –
ありがとう1月私のオプションは、この既存のフォルダ構造を使用してローカルSVNリポジトリを作成し、svn-gitユーティリティをGitにインポートしようとしていますか?とにかく私は歴史/ユーザーなどを心配していません。 – dchucks
Subversionはあなたに一番小さなビットを手助けするつもりはありません!まるで新しいプロジェクトを開始したかのようにgitでインポートしてください。私は答えにコマンドを書きます。 –