問題タブ [subgit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - SubGit を使用してリポジトリの再構築全体で svn を git に変換する
SubGit 2.0.3 を使用して Subversion リポジトリを Git に移行する作業を行っていますが、再構築全体で完全な履歴を維持しようとしています。ブランチの再構築全体で履歴を維持しているように見える構成がありますが、トランクは維持されていません。
再構築自体は少し...珍しいものでした...そして中間のレイアウトが含まれていました。
初期レイアウト:
- トランク: /ProjectOldName
- ブランチ: /ProjectOldName/Releases
- タグ: なし
中間レイアウト:
- トランク: /trunk/ProjectNewName
- ブランチ: /releases/ProjectNewName
- タグ: なし
最終的なレイアウト:
- トランク: /ProjectNewName/トランク
- ブランチ: /ProjectNewName/branches/releases
- タグ: /ProjectNewName/tags
したがって、変換に使用した subgit マッピングは次のとおりです。
これにより、リリース ブランチの履歴が維持され、ファイルのログは再構築を超えてしまいます...ただし、ブランチの作成 (再構築の前に発生) で停止するように見えました。ただし、マスター上の同じファイルの履歴は、再構築の最終ステップの作成で停止し、予期された「old-master-interim」および「old-master」ブランチは git リポジトリに存在しませんでした。
svn コピーを使用して再構築が行われたようです (つまり、手動でファイルをコピーして再コミットしませんでした)。最終的なレイアウトの履歴は正しく保存されていました。中間レイアウトは 2 回作成されましたが、最初の試みは削除され、履歴が保存されていないことを示すコメントが付けられました。したがって、再構築コミットのチェーンが(トランクの場合)行ったことがわかります。
- /ProjectOldName から始めます
- ディレクトリ /trunk/ProjectNewName を追加
- /ProjectOldName/ から /trunk/ProjectNewName/ に複数のディレクトリ (すべてではありませんがほとんど) を追加します。これらのディレクトリの削除は追加されません (ディレクトリがそのブランチにまだ存在していないため、これがどのように行われたかはわかりません)。
- /trunk/ProejctNewName/ 内の複数のディレクトリ (上記で追加したものと同じセット) を /ProjectOldName/ から置き換えます (わずかに異なるリビジョンで、おそらく以前の追加をやり直そうとしていますか?)
- ディレクトリ /trunk/ProjectNewName を削除 (履歴が保存されていないというコメント付き)
- ディレクトリ /trunk/ProjectNewName を追加 (2 回目)
- /ProjectOldName/ から /trunk/ProjectNewName/ に複数のディレクトリを追加します。同じディレクトリのセットをもう一度追加しますが、今回は削除が存在しませんでした
- ディレクトリ /ProjectNewName/trunk を追加
- /trunk/ProjectNewName/ から /ProjectNewName/trunk/ に複数のディレクトリを追加します
- ディレクトリ /trunk/ProjectNewName を削除
似ていますが、リリース ブランチでは少し異なります。
- /ProjectOldName/Releases から始めます
- ディレクトリ /releases を追加
- 複数のディレクトリ (ブランチごとに 1 つ) を /ProjectOldName/Releases/ から /releases/ に追加します。
- ディレクトリ /releases を削除
- ディレクトリ /releases/ProjectNewName を追加
- 複数のディレクトリ (ブランチごとに 1 つ) を /ProjectOldName/Releases/ から /releases/ProjectNewName/ に追加します。
- ディレクトリを追加 /ProjectNewName/branches/releases
- /releases/ProjectNewName/ から /ProjectNewName/branches/releases/ に複数のディレクトリ (ブランチごとに 1 つ) を追加します。
- ディレクトリ /releases/ProjectNewName を削除
唯一の本当の違いは、ブランチではなくトランクで発生した「複数のディレクトリを置き換える」ステップのようです。
結局のところ:
- トランクの再構築全体で履歴を維持しながら、SubGit に上記を変換させる方法はありますか?
- SubGit は、元のリポジトリ レイアウトのようにトランクの下にブランチを持つことを処理できますか (つまり、/OldProjectName のトランク、/OldProjectName/Releases のブランチ)?
- 「トランク」マッピングについて何か特別なことはありますか? それとも、実際には「ブランチ」マッピングと変わらないのでしょうか? 私の知る限り、svn と git の両方について、それぞれ「trunk」ディレクトリと「master」ブランチについて特別なことは何もありません。
- ブランチの履歴は再構築に問題がないように見えますが、ブランチの元の場所に進むのではなく、ブランチの作成で停止します。これは何が原因で、どのように修正できますか (可能な場合)?
git - subgitでbranchs/user/*を適切にマッピングする
SubGit を評価していますが、SVN ディレクトリに標準ブランチと非標準ブランチの両方があることを除けば、かなりうまくインポートされているようです。
branches/test
とのような標準的なブランチがありますbranches/JIRA_89
が、いくつかのブランチbranches/user/jim
ともありbranches/user/bob
ます。
subgit インポート用にこれらのユーザー ブランチの名前を変更する正しい方法は何ですか?
git - .git ディレクトリを持つリポジトリで subgit を使用する
Git リポジトリに .git サブディレクトリを持たせたい場合、subgit の使い方がわかりません。
従来のsubgit configure
+ (subgit import
または) を使用すると、ディレクトリsubgit install
は作成されません。.git
最初に実行git init
すると、実行できますsubgit import
が、最初に実行できないようですsubgit configure
。構成ファイルをセットアップして、subgit import
.
すべてのリポジトリのものにsubgit
従来のディレクトリを使用するように指示する方法はありますか?.git
git - SubGit を使用してリモート SVN リポジトリをリモート GIT リポジトリにミラーリングする
現在、SVN から Git への移行を進めています。しばらくの間、両方を同時に使用したいと考えています。そのため、相互同期が必要です。SVN の変更は GIT にミラーリングする必要があり、その逆も同様です。
しかし、ちょっとした問題に直面しています: 次の SVN リポジトリにアクセスできます: https://svn.domain1.com/test_repo と次の Git リポジトリ: https://gitlab.domain2.com/test/ test.git
SubGit を 3 番目のサーバーにインストールし、2 つの SVN/GIT リモート リポジトリを自動的にミラーリングする方法を見つけた人はいますか?
私が見ることができることから、必要なリモート SVN ではなく、ローカル リポジトリにリモート SVN をミラーリングすることしかできません。
このようなコマンドは便利ですが、残念ながら "--git-url" は有効なパラメーターではありません。
この場合、誰かが有効な解決策を見つけましたか?
git - Subgit および svn コミット メッセージ フック
subgit を使用して git と svn を同期しています。コミット メッセージの形式をチェックするための svn フックがあります。
svn フックに違反せずに実行できる git アクションは限られていることがわかりました。例えば:
git commit -m 'XYZ: abc' git push. 正常に動作します。
git tag -a 1.0.0 -m 'XYZ: abc' git push 1.0.0 svn への同期時に subgit がメッセージを添付していないため、svn フックは失敗します。
等々。
git --alow-empty を使用してメッセージを偽造するか、svn でアクションを実行して同期を待つ以外に、これに対する解決策はありますか?
よろしく。
git - SubGit を使用して SVN を git にインポートする - git リポジトリにはブランチがありませんか?
私たちのチームは既存の SVN リポジトリを git に切り替えたいと考えているため、Subgit をインストールしました。私が知る限り、構造はかなり標準的です。
http://svn.local/project1/trunk
<trunk
http://svn.local/project1/branches
<branches
http://svn.local/project1/tags
<tags
私の問題は、インポートされた git リポジトリにブランチが含まれていないことです。インポートの方法は次のとおりです。
~/git に CD-d して実行しましsubgit configure --svn-url http://svn.local/project1/trunk project1
た。
このコマンドの結果は次のとおりです。
ステップ2を実行しました-SVNサーバーの有効な資格情報を追加しました。それが重要な場合は LDAP 対応ですが、資格情報は検証されており、間違いなく有効です。次に、subgit install project1
出力を実行しました:
したがって、SVN リポジトリからいくつかの履歴を取得したことがわかります。ただし、フォルダーgit branch -a
内で実行してproject1
も何も返されません。git fetch
リモートリポジトリを指定する必要があると言われていますが、そこに何を入れなければならないかわかりません。これを修正するにはどうすればよいですか?最終的に他の人がproject1
レポからクローンを作成し、コードと履歴を確認できるようになりますか?
git - SubGitを使用して同期されたSVNリポジトリでGitリビジョンハッシュを見つける方法は?
SVN から git に移行する過程で、 Stash でSVN Mirror Stash プラグイン( SubGit ) を評価しています。
私たちの要件の 1 つは、カスタム revprop または JSON 形式のログ メッセージを介して、SVN リポジトリで git リビジョン ハッシュを使用できるようにすることです。
基本的に、この質問で説明されていることの逆を行おうとしています。
私は git リポジトリと svn リポジトリの両方を管理しており、カスタム フック/スクリプトを喜んで作成しますが、このフックを挿入する適切な場所を subgit または stash のドキュメントで見つけることができませんでした。また、そのような機能を挿入するためのベスト プラクティスにも非常に興味があります。