質問

いくつかのパッチを適用した外部svnリポジトリをチェックアウトしました。
(パッチの適用は、競合のため手動でのみ行うことができます。)

今、このリモートリポジトリのローカルコピーを適切な方法で維持できるようにしたい。
(リモートリポジトリで読み取る以外のアクセス権はありません。)

まず、パッチの適用には手動の手順が含まれていたため、何らかのソース管理システムでローカルの変更をチェックインできるようにする必要があります。

2番目に、リモートリポジトリから更新を受信できるようにします。

これを達成する最良の方法は何ですか?

役に立ちましたか?

解決

ローカルコピーには、svnとは異なるソース管理システムを使用できますか?
例えば。 .svnフォルダーを含む完全なローカルコピーをcvsにチェックインします。

または git-svn を使用することもできますが、それが最善の解決策です。

より良い提案はありますか?

更新:はい、 git-svn のようです推奨されるソリューションになります。

しかし、記録には、 hgとsvn を使用することもできます。

他のヒント

これを行う従来の方法は、コードのエクスポートされたバージョンを取得し、独自のリポジトリにチェックインすることです。コードに更新がある場合は、それらをリポジトリにマージします。巧妙な分岐(ベンダーブランチの検索)により、マージを支援できます。チェックインしたエクスポートされたコードのバージョンに従って、リポジトリ内のコードにタグを付けます。

SVK は純粋にSubversion環境でこれを実行できることを理解しています(このようなものに使用しました数年前)。ただし、Gitを試してみたい場合は、 git-svn はさらに良い選択かもしれません。それが今日私が使用するものです。

ただし、Windowsを使用している場合は、 git-svn の動作に問題がある可能性があります。その分野での成功は限られており、そのためWindowsでは git-svn を使用しません。

svnsyncを使用すると、svnリポジトリのコピーを保持できますが、ローカルコピーを変更した瞬間から同期を続行できません。

最終的な日々の作業にgitを使用することをお勧めします。 svnリポジトリのローカル作業コピーを保持し、gitの制御下に置きます。それがgit masterです。そのリポジトリを別の場所にコピーし、ブランチマスターを作成してそこで作業を行い、パッチをブランチに直接適用します。

svn wcを定期的に更新し、マスターとしてgitリポジトリにプルします。次に、マスターとブランチをマージします。

紛らわしいのは、「2人のgitユーザー」がいることです。1つはローカルsvnリポジトリの作業コピーで、もう1つはパッチを適用したブランチです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top