Domanda

Può sembrare stupido, ma a volte mi imbatto in conflitti di versione tra due versioni di sovversione. Montare una directory su un server di sviluppo con sshfs e quindi modificare il codice con il mio Vim locale. Per cose di sovversione come l'aggiornamento, il commit ecc. Ssh sul server e lo faccio lì. Tuttavia, a volte confondo le mie shell e accidentalmente eseguo un aggiornamento o eseguo il commit nella mia shell locale nella directory montata. Subversion esce con un errore, che va bene. Tuttavia, quando provo a fare la stessa cosa sul server di sviluppo nella mia sessione ssh, sovversione dice che la directory di lavoro / sovversione ha una versione sbagliata. La versione di sovversione sul server è precedente alla versione sul mio notebook, quindi immagino che la mia (più recente) versione in qualche modo aggiorni le directory di lavoro in modo che siano incompatibili con la vecchia versione sul server di sviluppo. A volte l'eliminazione dei file .svn / lock aiuta, ma solo se lo faccio subito dopo aver eseguito il comando subversion sul mio notebook. Quando eseguo successivamente il comando sul server di sviluppo, i file di blocco scompaiono e non vedo un modo per salvare il checkout. Non sarebbe così male se il repository non fosse così grande. Soprattutto quando ho apportato molte modifiche e non posso impegnarle.

L'unica soluzione che vedo al momento è copiare i file che ho cambiato da qualche parte, rimuovere il checkout, fare un nuovo checkout completo e copiare nuovamente i file.

Esiste una soluzione migliore per salvare un checkout non funzionante e / o le mie modifiche?

Aggiorna Le FAQ Mikael Sundberg collegate contenevano la risposta. Lo scrivo qui, perché non lo dice esplicitamente. C'è uno script che può eseguire il downgrade dei repository aggiornati, quando è sicuro:

http : //svn.apache.org/repos/asf/subversion/trunk/tools/client-side/change-svn-wc-format.py

È stato utile?

Soluzione

Altri suggerimenti

Non sono sicuro di aver compreso correttamente il tuo problema, ma ecco alcuni suggerimenti:

Primo consiglio: hai provato il comando SVN Clean ?

Il prossimo è probabilmente inutile per te :), ma molte persone erano solite usare CVS non si rendono conto che SVN ha caratteristiche del genere, quindi lo scrivo.

Se usi Windows e client SVN di Tortoise puoi scegliere Mostra registro comando dal menu contestuale (tasto destro del mouse). Quando viene visualizzato l'elenco dei check-in, scegli l'ultimo valido e scegli dal comando del menu di scelta rapida ripristina questa revisione .

In altri casi (non Windows né Tortoise SVN), esaminare documentazione per la versione della riga di comando dei comandi sopra descritti.

Il prossimo suggerimento potrebbe aiutarti a evitare di mescolare le tue shell.

Hai scritto che usi la shell SSH - per evitare problemi con il mix di sessioni shell uso sempre un colore di sfondo diverso per ogni server (e account), che accedo (cioè bianco su nero per lo sviluppo, giallo su blu scuro sul server di prova e giallo su verde sul server di produzione).

Questo mi fa risparmiare molte volte :).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top