2011-10-14 13 views
5

ho un grosso problema con git-svn: ho bisogno di spingere solo il mio git repo a un server SVN, così ho fatto la seguentegit svn dcommit non trova modifiche e ripristinare la testa

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

Questo ha funzionato ottimo e tutto è sia su git che su svn!

Ora ho ricevuto il messaggio che il mio ramo di git master è 31 si commette dietro l'origine/master, quindi ho fatto un tiro di merda. Ora ho cambiato alcune cose nel mio repository (fondamentalmente è un progetto java di eclipse) e l'ho commesso. Ora voglio anche per spingerlo sul repo svn e ha fatto uno svn git dcommit ma quello non è di lavoro:

Committing to https://..../trunk ... 
No changes 
38b194cb2860b8bb73924cb05f9830dbdb70cf82~1 == 38b194cb2860b8bb73924cb05f9830dbdb70cf82 
No changes between current HEAD and refs/remotes/trunk 
Resetting to the latest refs/remotes/trunk 
Unstaged changes after reset: 
M  Product/Abgabe.tex 
Unable to extract revision information from commit daf483ad1333f3589386b87054f4c27fb7ff23cf~1 

cosa ho sbagliato? Il master è ora azzerato per il commit prima, ora ho bisogno di git checkout -- Abgabe.tex e git pull di avere la versione proprio qui ...

Edit: Se faccio un git svn rebase, ricevo per ogni commettere una lunga lista di conflitti, in modo ho fatto git rebase --skip fino alla fine, e poi dcommted, questo funzionava, ma sembra essere un hack sanguinosa:/

risposta

7

Penso che quello che manca nel vostro flusso di lavoro è git svn rebase http://flavio.castelli.name/2007/09/04/howto_use_git_with_svn/

+0

mh sì sembra quindi ... ok ho identificato il problema: se uso git su host diversi e lo spingo al repository e devo unire rami, lo svn ramo ha un problema con la storia non lineare. ora devo rebase ... ma questo è dolore nel culo! quando voglio spingere di nuovo a git ho bisogno di estrarre prima la cronologia git e poi rebase di nuovo alla versione svn ... – reox

+3

Generalmente faccio un 'git svn rebase' su master poi' git checkout -b feature_branch'. Esegui tutto il mio lavoro nel ramo di funzionalità una volta che sono pronto per eseguire il commit a monte del server svn, eseguirò 'git checkout master' quindi' git svn rebase' quindi 'git merge feature_branch' quindi' git svn dcommit'. – Joe

+1

@Joe. Link è ora rotto, ma git svn rebase era il trucco. Grazie. – JackMorrissey

Problemi correlati