La compañía para la que trabajo está comenzando y cambiaron su nombre en el proceso. Así que todavía usamos el nombre del paquete com.oldname porque tenemos miedo de romper el historial de cambios de archivos, o los vínculos de ascendencia entre versiones, o lo que sea que podamos romper (no creo que use los términos correctos, pero se obtiene el concepto)¿Cómo cambiar el nombre de los paquetes de Java sin romper el historial de Subversion?
Utilizamos: Eclipse, TortoiseSVN, Subversion
encontré somewhere que debería hacerlo en muchas medidas para evitar la incoherencia entre el contenido de las carpetas .svn y nombres de los paquetes de archivos de Java:
- Primera utilice TortoiseSVN para cambiar el nombre del directorio, actualizando los directorios .svn.
- A continuación, cambie manualmente el nombre del directorio al nombre original.
- Para usar finalmente Eclipse para cambiar el nombre de los paquetes (refactor) al nuevo nombre, actualizando los archivos java.
Eso me parece bueno, pero necesito saber si la ascendencia y la historia y todo lo demás seguirá siendo coherente y funcionará bien.
No tengo las llaves de ese servidor, es por eso que no hago copias de seguridad apresuradas y pruebo una o dos cosas. Me gustaría encontrar una buena razón para no hacerlo, o una forma de hacerlo que funcione.
Gracias por su ayuda,
M. Joanis
paquete cambiar el nombre de la prueba
Procedimiento:
- Crear un nuevo paquete de com.oldname.test .renametest.subpackage.
Agregar una nueva clase bajo renametest llamada RenameTest0.java y que contiene:
class RenameTest0 { public RenameTest0() { showMessage(); new RenameTest1(); } public static void showMessage() { System.out.println("RenameTest0!"); } public static void main(String[] args) { new RenameTest0(); } }
Agregar una nueva clase bajo renametest.subpackage que contiene:
class RenameTest1 { public RenameTest1() { showMessage(); RenameTest0.showMessage(); } public static void showMessage() { System.out.println("RenameTest1!"); } }
prueba que RenameTest0 funciona muy bien.
- Commit.
- Cambia los mensajes de ambas clases.
- Commit.
- Nuevamente, cambie el mensaje de una clase y comprométase (solo creando un poco de historial).
- Aplicar el procedimiento propuesto anteriormente (los tres pasos en el mensaje original) para cambiar el nombre del paquete renametest a testrename.
- Commit.
- Prueba de ejecución.
- Modifica los mensajes nuevamente y prueba.
- Commit.
- Intente retroceder a la versión cuando ambos mensajes se hayan cambiado simultáneamente la primera vez.
- Si todo funcionó bien hasta este punto, se ve bien, ¿no?
Resultado de la prueba:
- Nota sobre el paso 9: tenía que hacerlo en orden inverso (Eclipse cambiar el nombre de TortoiseSVN cambiar el nombre.), De lo contrario se está complicando, como TSVN crear un nuevo carpeta/paquete y marca el antiguo para eliminación ... Así que no puede cambiar el nombre de Eclipse a menos que coloque el paquete anterior en otro lugar mientras tanto para evitar perder carpetas .svn, etc. etc. No se veía como un buen idea de ir más lejos con este método. (Nota para mí: ¡no olvide marcar la casilla para cambiar el nombre del paquete recursivo!)
- Nota sobre el paso 14: ¡Funcionó! Podemos ver versiones anteriores; todo lo que tenemos que hacer es decir que no se rompa la copia/movimiento y está bien. Una vez revertido a una versión antes del cambio de nombre, , los nombres de los paquetes no vuelven al buen nombre a través de, probablemente eso lo haría refactorizar nuevamente.
- Nota final: Me sorprendió tener que realizar los pasos críticos en orden inverso. Para hacer eso justo en el medio de este primer paquete, renombrar "try", tuve que revertir algunas modificaciones TSVN y manuales, arrojando una pequeña duda sobre la naturaleza repetible de los resultados exactos de este procedimiento. Tendré que hacer una segunda prueba para confirmar su validez. En resumen: se ve bien, pero necesita más pruebas.
Una buena razón para no hacerlo sería que sería una gran cantidad de trabajo (incluidas las pruebas) sin ningún beneficio. Si crees que alguien va a empezar a producir bibliotecas en el espacio com.oldname que colisionará con el tuyo, podría valer la pena, pero la idea general de los prefijos de dominio era garantizar la exclusividad, no satisfacer al personal de marketing. – msw
Debo admitir que es un muy buen punto ... – Joanis
@Don Kirby & @Karussell: Intentaré hacer una prueba hoy o mañana y daré un comentario al respecto aquí. – Joanis