2009-09-15 17 views
10

Ho un repository git-svn e ho fatto un 'git svn fetch' su di esso.Come aggiornare 'git log' dopo 'git svn fetch' su un repository nudo?

L'esecuzione di 'git log' non mostra gli aggiornamenti. Sono sicuro che ci sono aggiornamenti in quanto mostra i file modificati dopo la visualizzazione di 'git svn fetch' e 'git svn log'.

Si prega di notare che ho intenzionalmente fatto questo un semplice repo così 'git rebase' non funzionerà. Qual è il comando appropriato per ottenere le modifiche recuperate?

risposta

8

Prova git log git-svn - I don Ho un semplice repository, ma ho appena eseguito git svn fetch e lo standard git log mi fornisce il log corrente (rebased), ma con il git-svn arg (che è l'altro ramo oltre al master identificato da git branch -a nel mio caso) Prendo il registro fino a th revisione scaricata

+0

Sì, hai ragione. 'git log' cerca il master ref che è il motivo per cui ha funzionato su 'git symbolic-refs/heads/master refs/remotes/git-svn'. Grazie. – vjangus

+0

Anche questo non funziona in git 1.7.5.4 – MDCore

6

ho trovato la risposta,

git simbolico-ref refs/responsabili/padrone refs/telecomandi/git-svn

grazie ai commenti di Steven Walter in http://gsocblog.jsharpe.net/archives/12

+0

Questo non funziona più in git 1.7.5.4 – MDCore

+0

funziona per me !!! –

17

A git svn fetch aggiunge un nuovo ramo remoto chiamato remotes/git-svn (come si può vedere con git branch -a).

Se si apportano modifiche al svn monte, quindi eseguire git fetch di nuovo, i cambiamenti vengono tirati (in realtà, inverosimile) in questo ramo, non sul master.

Quindi, per fare in modo che git log (e tutto il resto) funzioni correttamente sul ramo master, è sufficiente un'unione, come normalmente si dovrebbe fare dopo un recupero (questo è ciò che fa git pull, un fetch e quindi un'unione).

Poiché git svn pull non funziona, sarà necessario unirlo manualmente. Mentre sul branch master, eseguire:

git merge remotes/git-svn

Ciò si fonderà il tuo branch master con il ramo git-svn, rendendo ancora una volta tutto ok.

Quindi, in futuro, eseguire

git svn fetch 
git merge remotes/git-svn 

e sarete aggiornati con il repository upstream, ancora una volta.

L'impostazione del riferimento della testa del master su git-svn come suggerito da vjangus lo farà funzionare, ma non si dovrebbero mai apportare modifiche in un ramo remoto.

+1

Questa è stata la risposta che ha affrontato correttamente la situazione che stavo avendo. – Ian

+0

Inizialmente avevo tirato il repository svn da 'git svn fetch -s --prefix = origine /', quindi nel mio caso c'era un ramo 'remotes/origin/trunk' invece di uno' git-svn'. La stessa soluzione però. – mcmlxxxvi

Problemi correlati