2010-05-08 6 views
12

Come si rintracciano le modifiche SVN upstream utilizzando git-svn e github?Il monitoraggio di svn upstream cambia con git-svn e github?

ho usato git-svn per convertire un repository SVN a Git su github:

$ git svn clone -s http://svn.osqa.net/svnroot/osqa/ osqa 
$ cd osqa 
$ git remote add origin [email protected]:turian/osqa.git 
$ git push origin master 

Allora ho fatto alcuni cambiamenti nel mio repo git, commesso, e spinto a GitHub.

Ora, sono su una nuova macchina. Voglio prendere le modifiche SVN a monte, unirle con il mio repository github e trasferirle al mio repository github. This documentation dice: "Se perdi la tua copia locale, esegui nuovamente l'importazione con le stesse impostazioni e otterrai un'altra directory di lavoro con tutto il necessario metainfo SVN."

Così ho fatto quanto segue. Ma nessuno dei comandi funziona come desiderato. Come posso monitorare le modifiche SVN a monte usando git-svn e github? Che cosa sto facendo di sbagliato?

$ git svn clone -s http://svn.osqa.net/svnroot/osqa/ osqa 
$ cd osqa 
$ git remote add origin [email protected]:turian/osqa.git 
$ git push origin master 
To [email protected]:turian/osqa.git 
! [rejected]  master -> master (non-fast forward) 
error: failed to push some refs to '[email protected]:turian/osqa.git' 
$ git pull 
remote: Counting objects: 21, done. 
remote: Compressing objects: 100% (17/17), done. 
remote: Total 17 (delta 7), reused 9 (delta 0) 
Unpacking objects: 100% (17/17), done. 
From [email protected]:turian/osqa 
* [new branch]  master  -> origin/master 
From [email protected]:turian/osqa 
* [new tag]   master  -> master 
You asked me to pull without telling me which branch you 
want to merge with, and 'branch.master.merge' in 
your configuration file does not tell me either. Please 
name which branch you want to merge on the command line and 
try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details on the refspec. 
... 
$ /usr//lib/git-core/git-svn rebase 
warning: refname 'master' is ambiguous. 
First, rewinding head to replay your work on top of it... 
Applying: Added forum/management/commands/dumpsettings.py 
error: Ref refs/heads/master is at 6acd747f95aef6d9bce37f86798a32c14e04b82e but expected a7109d94d813b20c230a029ecd67801e6067a452 
fatal: Cannot lock the ref 'refs/heads/master'. 
Could not move back to refs/heads/master 
rebase refs/remotes/trunk: command returned error: 1 

risposta

5

Sembra che, con l'eccezione del vostro rebase, tutto è avvenuto come previsto, ma con molto più verbosità che ci si potrebbe aspettare. Ecco cosa penso che farei per creare/integrare i bit su una nuova macchina:

  1. Clona il tuo repository Svn. Idealmente, mi piacerebbe iniziare con il repository git perché è tuo ed è in uno stato conosciuto, ma non conosco alcun modo di inizialmente estrarre il contenuto da Svn piuttosto che clonarlo. Mi piace aggiungere uno --prefix=svn/ durante la clonazione in modo che tutte le mie diramazioni remote da Svn siano annotate come tali.
  2. Aggiungi la tua origine (proprio come hai fatto tu).
  3. Creare una filiale locale per il lavoro. git co -b local-branch svn/branchname. Ora hai una bella area locale per giocare con le cose.
  4. Assicurati di essere su quel ramo locale che hai appena creato (dovresti essere).
  5. Estrazione da Github. L'hai fatto correttamente, ma in modo ambiguo. Per chiarire l'ambiguità, sii esplicito: git pull origin master (pull from origin to the master branch).
  6. Rebase da Svn per sincronizzare tutto. git svn rebase.

Non l'ho provato, ma si tratta di un flusso di lavoro piuttosto tipico e gli errori che si verificano non sembrano essere correlati al servizio di due telecomandi (Svn e Github). Sembrano essere un po 'più generici e correlati al tuo flusso di lavoro e al modo in cui stai chiamando i comandi.

Problemi correlati