2011-02-01 10 views
24

C'è un modo per eseguire il downgrade di una copia di lavoro di subversion dalla versione 1.7 alla versione 1.6x?Come eseguire il downgrade di un albero di subversion dalla v1.7 alla v1.6?

La versione 1.7 utilizza una singola cartella radice .svn e sqlite per i metadati, pertanto lo script python di conversione da tigris.org non funziona.

Sei a conoscenza di una soluzione che non prevede l'esecuzione di un checkout pulito sotto la v1.6 e la copia dei file modificati?

+0

1.7 è ancora stato rilasciato? Quale client lo supporta? – eckes

+0

Per le versioni beta di Windows sono disponibili sul sito di TortoiseSVN nightly builds all'indirizzo http://nightlybuilds.tortoisesvn.net/latest/ – ccpizza

risposta

18

C'è un script per fare downgrade della copia di lavoro.

Tuttavia, questo non supporta il downgrade dal formato 1.7 al formato 1.6, né lo supporterà mai in futuro. I commenti nello script ci dicono perché questo è impossibile:

# Downgrading from format 11 (1.7-dev) to format 10 is not possible, 
    # because 11 does not use has-props and cachable-props (but 10 does). 
    # Naively downgrading in that situation causes properties to disappear 
    # from the wc. 
+0

Ci scusiamo per il voto di -1. Ma come può essere una risposta valida? – fishbone

+2

@fishbone: presumo tu voglia dire che una delle altre risposte dovrebbe essere votata sopra questa. Nota che quelle risposte non conserveranno effettivamente lo stato della tua copia di lavoro. Per fare un esempio, se avessi fatto una "svn mv foo bar", dopo il downgrade vedresti che foo è "mancante" e la barra è "non invertita". Le modifiche alla proprietà SVN non inviabili andrebbero completamente perse. Quindi IMO "non può essere fatto" è ancora una risposta valida. –

+1

Mi dispiace, colpa mia, devo rimuovere il downvote. Mi è sembrato come "Come posso effettuare il downgrade da 1.7 a 1.6" - "Conosco uno script che proprio non può farlo": D. Ho frainteso i commenti della sceneggiatura, che sono il vero punto della tua risposta. Modifica: non riesco a rimuovere il voto finché questa risposta non viene modificata :( – fishbone

5

La mia soluzione sporca era quella di creare una cassa pulita utilizzando v1.6 e quindi copiare solo i .svn cartelle alla copia di lavoro esistente utilizzando un piccolo script bash:

#!/usr/bin/env bash 
    target=/projects/working-copy-dir 

    svn_dirs=`find . -type d -iname .svn` 

    for svn_dir in $svn_dirs; do 
     tosvn_dir=$target${svn_dir/\.\//} # strip the extra './' path component 
     cp -r $svn_dir $tosvn_dir 
    done 

Questo presuppone che lo script venga eseguito dalla directory di verifica pulita. Target è la copia di lavoro modificata. La directory v1.7 .svn di livello superiore dovrebbe essere rimossa/rinominata prima di eseguire lo script.

ps. Non ho intenzione di contrassegnarlo come una risposta per il momento, perché la soluzione di cui sopra è una soluzione alternativa e in realtà non converte il progetto da 1.7 a 1.6. Quindi la domanda rimane aperta.

14

Ho trovato il modo migliore per eliminare la cartella .svn dalla copia di lavoro 1.7, quindi eseguire il checkout del 1.6 su di esso. Ha funzionato per me, potrebbe funzionare anche per te. (Con l'utilizzo di TortoiseSVN cliente 1.6.x)

+0

Questo ha funzionato molto bene per me. Sono stato in grado di mantenere le modifiche apportate localmente.Alcuni file aggiuntivi sono stati modificati ma sono riuscito a ripristinarli. – Speck

+0

Il motivo per cui ho bisogno di eseguire il downgrade è così che posso copiare un checkout da 30 gb da una workstation con 1.7 ad una workstation con 1.6 (da Ubuntu 12.10 a 12.04) .Non ho provato questo, ma sembra una soluzione molto plausibile.Grazie! –

2

(assumendo che i file su un server siano corrette) modo migliore che ho trovato finora:

  1. chiudere il vostro IDE
  2. eliminare i file locali
  3. remove svn 1.7
  4. installare svn 1.6
  5. file checkout
+1

Lo farei anche io ma la domanda era su come evitare questo. –

0

Questo approccio utilizza il gestore di pacchetti sinaptici, quindi assicurarsi che sia installato.

  1. aggiungere la seguente riga al /etc/apt/sources.list:

    deb http://us.archive.ubuntu.com/ubuntu precise main 
    

    Questo assicurerà di avere almeno due versioni tra cui scegliere, cioè 1.7 e 1.6.

  2. Run

    sudo apt-get update 
    
  3. Vai al gestore di pacchetti, cercare subversion e selezionarlo.

  4. Dal pacchetto, selezionare Menu ->forza-versione selezionare 1.6 o destra fare clic ->proprietà -> Versione selezionare 1.6.

  5. Installare il pacchetto

  6. Seleziona pacchetto di nuovo, poi menù ->blocco versione.

    Questo per impedire aggiornamenti automatici alle versioni superiori.

Questo è tutto. In bocca al lupo.

Problemi correlati