¿Cómo puedo combinar entre sucursales cuando el nombre del paquete es diferente?
Me pregunto si hay una manera fácil de combinar entre las ramas del mismo proyecto de Android donde el nombre del paquete (y por lo tanto los nombres de directorio) son diferentes. Dado que voy a tener muchas sucursales y todos ellos necesitan mantenerse al día, estoy buscando la mejor manera de hacer estas fusiones de manera eficiente.
El árbol de directorios de nuestro proyecto para Android tiene este aspecto
- IDEA de IntelliJ y Eclipse en el mismo proyecto
- Agregue el módulo existente bajo control de fuente de Subversion en IntelliJ IDEA
- Android Studio SVN 1.8 Este cliente es demasiado viejo para trabajar con la copia de trabajo
- Práctica para garantizar que los proyectos de Android se creen inmediatamente después de la compra de SVN en Eclipse
- Cómo actualizar automáticamente android: versionName?
\assets \libs\... \res\... \src\com\mycompany\mainproject AndroidManifest.xml build.xml myproject.iml myproject.ipr
Cuando hacemos una versión personalizada para un cliente, cambiaría el nombre del paquete, como client1app o client2app. Necesita nombres de paquetes diferentes si existen en el Android Market como diferentes aplicaciones para diferentes clientes. Así que hago ramas separadas que contiene idénticos nombres de archivos y estructura de directorios, excepto el nombre de la carpeta src que debe cambiarse para que coincida con el nombre del paquete. Así que client1app o client2app tendrán la siguiente estructura de directorios:
\src\com\mycompany\client1app \src\com\mycompany\client2app
Los nombres de archivos de esas carpetas siguen siendo idénticos a mainproject. Es sólo que el nombre del directorio es diferente. (El contenido del archivo es casi idéntico excepto por la cláusula de paquete.)
Utilizamos SVN para el control de código fuente. Así que cuando me fusiono de cherrypick de mainproject a client1app, creo que tendría que fusionar los archivos de nivel superior y otros directorios primero y luego realizar una combinación manualmente para src \ com \ mycompany \ mainproject a src \ com \ mycompany \ client1app. Son cinco combinaciones diferentes, (para el nivel superior y cuatro subdirectorios). Si no fuera por los nombres de directorio que son diferentes, esto sería un simple paso sencillo de fusión, y sé cómo hacer eso.
Pregunta 1: ¿Hay alguna configuración que pueda decirle a SVN que \ src \ com \ mycompany \ mainproject y \ src \ com \ mycompany \ client1app contienen los mismos nombres de archivo al fusionar? O alguna otra forma de cerezo se fusionan fácilmente entre las dos ramas?
Pregunta 2: Git sería un mejor ajuste para esto?
- ¿Cómo puedo colocar un proyecto android en svn con bibliotecas de soporte
- Error de SVN en eclipse con operación de borrado (aparentemente)
- Simple Revision Control para Eclipse y Android
- No hay cambios para confirmar el estudio de Android SVN
- Combinación de SVN con el estudio de Android
- Migración desde eclipse + SVN a Android Studio
- Cómo mantener la versión gratuita / pagada de la aplicación separada en subversión
- Android Studio no puede autenticarse con SVN
Un proyecto de la Biblioteca de Android con el código común le ayudaría más con esto. Entonces no tendrías que hacer ninguna fusión en absoluto.
¿Hay alguna configuración que podría decir a SVN que \ src \ com \ mycompany \ mainproject y \ src \ com \ mycompany \ client1app contienen los mismos nombres de archivo al fusionar?
No. SVN realmente no rastrea renombrados como renombra , las combinaciones de archivos renombrados y cambiados generan los errores "conflicto del árbol" (supongo / no probado /, el mismo efecto aparecerá en ren renames)
Git sería un mejor ajuste para esto?
Sí, Git o Mercurial o Bazaar tienen rename-tracking y más fácil merge-path como resultado. Yo, personalmente, prefiero más estilo mercurial de selección manual que la heurística de Git, pero los gustos pueden diferir
- Notificación LED de pulso Android mientras la pantalla está encendida
- Preferencias independientes para cada vista en una aplicación para Android