2009-09-15 17 views
10

私は裸のgit-svnリポジトリを持っていて、その上に 'git svn fetch'を行いました。裸のレポで 'git svn fetch'の後に 'git log'を更新するには?

'git log'を実行しても更新が表示されません。私は 'git svn fetch'と 'git svn log'の後に変更されたファイルを表示しているので、更新があると確信しています。

「Gitのリベースが」動作しませんので、私は意図的にこの裸のレポたことに注意してください。 フェッチされた変更を取得する適切なコマンドは何ですか?

答えて

8

でスティーブン・ウォルターのコメントに

おかげでgit log git-svnを試してみてください - Iドン「がtは裸のレポを持っているが、私はきただけgit svn fetchを実行し、標準git logは私に与えられる電流(リベース後)ログが、私の場合にはgit branch -aによって識別され、マスター以外の分岐があるのgit-svnの引数(と)ログを取得するe取り出した改訂

+0

あなたは正しいです。 'git log'はマスターリファレンスを探します。これは、 'git symbolic-ref refs/heads/master refs/remotes/git-svn'で動作した理由です。ありがとう。 – vjangus

+0

これはgit 1.7.5.4でも動作しません。 – MDCore

6

私は答えを見つけ、

のgitシンボリック-refのレフリー/ヘッド/マスター、参考文献/リモコン/のgit-svnの http://gsocblog.jsharpe.net/archives/12

+0

これはgit 1.7.5.4でもう動作しません – MDCore

+0

それは私のために働く! –

17

git svn fetchは、remotes/git-svnと呼ばれる新しいリモートブランチを追加します(git branch -aと同様)。

上流のsvnを変更してからgit fetchを再度実行すると、変更はマスターではなく、このブランチ上でプル(実際にはフェッチ)されます。

マスターブランチでgit log(と他のすべて)が正常に動作するようにするには、通常はフェッチ後に行う必要があるようにマージする必要があります(これはgit pullが行うもので、フェッチしてからマージ)。

のgitのsvnプルが動作しないので、手動でマージする必要があります。 masterブランチにいる間、実行します。

git merge remotes/git-svn

これは、再び、すべてがOKすること、のgit-svnのブランチをmasterブランチをマージします。

だから、将来的には、

git svn fetch 
git merge remotes/git-svn 

を実行して、あなたは再び上流のリポジトリで最新の状態になります。また、この作業を行いますvjangusによって示唆されていますが、これまでにリモートブランチでの変更を行うべきではありませんようにgit-svnの頭にマスターの頭の参照を設定する

+1

これは、私の状況を適切に解決した答えです。 – Ian

+0

は、私が最初にフェッチのgitのsvn 'でのsvnレポを引っ張っていた -s --prefix =起源/'、私の場合には代わりに、 'gitの-svn' 1の'リモコン/起源/ trunk'支店があったので。しかし、同じ解決策。 – mcmlxxxvi

関連する問題