La società per cui lavoro sta iniziando e hanno cambiato il loro nome nel processo. Quindi usiamo ancora il nome del pacchetto com.oldname perché abbiamo paura di infrangere la cronologia delle modifiche ai file, o dei legami ancestrali tra le versioni o qualsiasi cosa potremmo interrompere (non credo di usare i termini giusti, ma ottieni il concetto).Come rinominare i pacchetti Java senza interrompere la cronologia di Subversion?
Usiamo: Eclipse, TortoiseSVN, Subversion
ho scoperto somewhere che avrei dovuto farlo in molte misure per prevenire l'incoerenza tra i contenuti delle cartelle .svn e dei pacchetti in file java:
- First utilizzare TortoiseSVN per rinominare la directory, aggiornando le directory .svn.
- Quindi, rinominare manualmente la directory con il nome originale.
- Per utilizzare infine Eclipse per rinominare i pacchetti (refactor) sul nuovo nome, aggiornando i file java.
Questo mi sembra buono, ma ho bisogno di sapere se l'ascendenza, la storia e tutto il resto saranno ancora coerenti e funzionanti.
Non ho le chiavi per quel server, è per questo che non faccio rapidamente il backup delle cose e provo una o due cose. Mi piacerebbe venire con una buona ragione per non farlo, o un modo di farlo che funziona.
Grazie per il vostro aiuto,
M. Joanis
pacchetto rinominare prova
Procedura:
- Creare un nuovo pacchetto com.oldname.test .renametest.subpackage.
aggiungere una nuova classe sotto renametest chiamato RenameTest0.java e contenente:
class RenameTest0 { public RenameTest0() { showMessage(); new RenameTest1(); } public static void showMessage() { System.out.println("RenameTest0!"); } public static void main(String[] args) { new RenameTest0(); } }
aggiungere una nuova classe sotto renametest.subpackage contenente:
class RenameTest1 { public RenameTest1() { showMessage(); RenameTest0.showMessage(); } public static void showMessage() { System.out.println("RenameTest1!"); } }
prova che RenameTest0 funziona benissimo.
- Conferma.
- Modificare i messaggi di entrambe le classi.
- Conferma.
- Ancora, cambia il messaggio di una classe e commetti (solo creando un po 'di storia).
- Applicare la procedura proposta sopra (i tre passaggi nel messaggio originale) per rinominare il pacchetto renametest in testrename.
- Conferma.
- Test eseguito.
- Modificare di nuovo i messaggi e testare.
- Conferma.
- Provare a ripristinare la versione quando entrambi i messaggi sono stati modificati contemporaneamente la prima volta.
- Se tutto ha funzionato bene fino a questo punto, sembra buono, no?
Risultato della prova:
- Nota sul punto 9: doveva farlo in ordine inverso (Eclipse rinominare POI TortoiseSVN rinominare.), Altrimenti si stava facendo complicata, come TSVN creare una nuova cartella/pacchetto e contrassegna il vecchio per la cancellazione ... Quindi non è possibile rinominare per Eclipse a meno che non si metta il vecchio pacchetto da qualche altra parte nel frattempo per evitare di perdere cartelle .svn, ecc. ecc. Non sembrava un buon idea di andare oltre con questo metodo. (Nota: non dimenticare di spuntare la casella per la ridenominazione del pacchetto ricorsivo!)
- Nota sul passaggio 14: Funzionato! Possiamo vedere le versioni precedenti; tutto quello che dobbiamo fare è dire di non interrompere la copia/lo spostamento e va bene. Una volta ripristinata una versione prima della rinomina, i nomi dei pacchetti non sono tornati al buon nome anche se, probabilmente il refactoring lo farebbe di nuovo.
- Nota finale: sono stato sorpreso di dover fare i passaggi critici in ordine inverso. Per farlo giusto nel mezzo di questo primo pacchetto rinominare try, ho dovuto ripristinare alcune modifiche TSVN e manuali, gettando un piccolo dubbio sulla natura ripetibile dei risultati esatti di questa procedura. Dovrò fare un secondo test per confermare la sua validità. Per riassumere: sembra buono, ma necessita di ulteriori test.
Un buon motivo per non farlo sarebbe che sarebbe una buona quantità di lavoro (compresi i test) senza alcun beneficio. Se pensi che qualcuno inizi a produrre librerie nello spazio com.oldname che entrerà in collisione con il tuo potrebbe valerne la pena, ma l'intera idea dei prefissi di dominio era quella di garantire unicità, non di soddisfare le persone del marketing. – msw
Devo ammettere che è un ottimo punto ... – Joanis
@Don Kirby e @Karussell: cercherò di eseguire un test oggi o domani e fornirò un feedback in merito. – Joanis