1

NetbeansSVNプラグインと組み合わせて使用​​するリポジトリとしてSVNを使用するプロジェクトに取り組んでいます。Netbeans SVN diffは、互いにいくつかのdiffを表示するのに欠けていることがわかったため、を使用git-svnできるようにするために使用したいと思いましgit guiた。

問題は、両方のリポジトリの同期を維持することです。私の現在のワークフローは次のとおりです。

  • 更新(ローカル変更なし):

    svn up
    git stash -u # include new files too
    git svn rebase
    git stash drop
    
  • コミット:

    git commit
    git commit ...
    git svn dcommit
    

これらの基本ケースは機能しますが、ローカルのステージングされていない/コミットされていない変更がある場合はうまく機能しません。

ローカルのgit-svnと.svnの同期を維持するためのより良い方法は何ですか?

4

1 に答える 1

0

私はかなりうまくいく回避策を見つけました。アイデアは、subversionを使用してファイルを更新し続け、gitに、作業ツリー内のファイルに触れることなく、その履歴のみを更新させることです。フェッチされた最新のSubversionコードを含むgit svn特別なブランチを作成しました。git-svn

ファイルを更新するコマンドと、それに続くgit repo history update:

svn up
git svn fetch
git reset --mixed git-svn

最後のgit reset --mixedコマンドは、ファイルが最後のSVNリビジョンのものであることをgitが認識できるようにするために必要です。このコマンドは、行ったコミットをリセットすることに注意してくださいgit commit(変更ではなくコミットメッセージを削除します)。その解決策として、svn commit上記のようにコミットして履歴を取得します。

git reset --mixed git-svnどういうわけかあなたは使用することを約束することができませんdcommit。を実行git reset --mixed git-svnした後、次のシーケンスに従ってgitを使用してコミットします。

git stash
git svn rebase
git stash pop
git commit ...
git svn dcommit
于 2012-12-04T12:18:05.153 に答える