Clonación de fuentes de Android a un servidor de repositorio local
Quiero desarrollar en la parte superior de Android usando un servidor de repositorio Android local. Necesito agregar varios nuevos repositorios de git a la jerarquía de gits, y necesito modificar fuentes androides existentes para una adaptación de encargo de Androide.
¿Cuál es la forma "correcta" de clonar todo el árbol de fuentes de Android de los repositorios git, de modo que pueda empujar / extraer de / hacia un servidor de repositorio local común y aún así sacar fácilmente nuevos cambios de Android desde arriba?
- La sincronización de Repo se bloquea
- ¿Qué hace efectivamente la init de repo y la sincronización de repo?
- GIT: Dos repositorios diferentes con una carpeta compartida
- Uso de Repo con Msysgit
- ¿Qué es Repo y por qué Google lo usa?
Estoy buscando específicamente consejo en cómo utilizar el guión del repo
para la interacción con mi propio servidor, y cómo fijar el depósito del git del manifest
y las ramas que manejan en él.
- ¿Cómo mostrar las ramas disponibles en el árbol de fuentes de Android?
- Android Library Package perdió el nombre de los parámetros de las interfaces internas
- Repo: ¿no se ha encontrado el comando?
- Utilizando un local_manifest.xml con repo
- ¿Cómo configurar un repositorio de fuente de Android mientras hospeda los árboles git como repositorios privados en github?
- Android Source Repo GPG clave pública no encontrada
- Repositorio de intentos de Android
- ¿Cómo funciona el repositorio de manifiesto de repo de Android?
En tu servidor git
- Repo init -u https://android.googlesource.com/platform/manifest –mirror # –mirror es la clave
- Sincronización de repo
Debido a que especificaste –mirror, todos los repos creados serán reposos 'nus', que es la forma correcta de crear un espejo a menos que seas un uberlord git.
En su cliente:
-
Repo init -u [email protected]: platform / manifest.git # se puede utilizar un medio diferente de acceder a su servidor git; Tengo que asumir algo para este ejemplo.
-
No hay sincronización de repo todavía. Su manifiesto probablemente esté equivocado. Mire el enlace simbólico vinculado .repo / manifest.xml … cat y lea en la parte superior el
<remote fetch=""
… probablemente apunte hacia android.googlesource.com. Pero si dice ".." Creo que significa "volver a mi servidor", por lo que puede saltar al paso 6). Pero si se apunta de nuevo a otro servidor (no el tuyo), entonces vaya al paso 3. - Cd .repo / manifests
- Vim .repo / manifests / default.xml (o lo que sea que sea tu manifest.xml activo).
- Arreglar el archivo
<remote fetch="CHANGE ME"
default.xml para volver al servidor git - Intentar una sincronización de repo. Debe extraer sólo de su repositorio. Si no lo hace, detenga la sincronización de repo y trate de corregir default.xml de nuevo.
- Una vez que vea el trabajo de sincronización de repo en su máquina de prueba, entonces vuelva a ejecutar default.xml (
git commit; git push
), para que otros miembros del equipo tengan experiencia 'no-manifest-edit' cuandorepo init; repo sync
repo init; repo sync
de su servidor.
Una vez que vea un 'no manifest edit' repo init; repo sync
repo init; repo sync
trabajo, a continuación, vaya a su default.xml de nuevo, y acaba de comenzar a agregar nuevos elementos XML junto con las toneladas de otros elementos del proyecto Android existentes; Estos nuevos elementos apuntarán a sus proyectos personalizados. Para estos nuevos proyectos, sólo git init ellos como lo haría normalmente, y asegúrese de que tienen una rama que coincida con la misma <default revision="whatever_branch_you_see_here"
para que una repo sync
tendrá éxito cuando se encuentra con estos nuevos proyectos.
Si de hecho establece una rama predeterminada en su elemento <default revision=""
manifiesto, simplemente haga que todos hagan una rama local establecida para seguir la rama remota especificada en el atributo de revisión. Así, por ejemplo, si <default revision="branch_a"
está en su manifiesto, después de hacer una sincronización de repo, cuando haga cd en un subproyecto de interés, haga un:
git checkout -b branch_a origin/branch_a
Entonces, si el usuario git push
's (no hay ningún comando de repo a empujar, por lo que sé), y si alguien hace una ./repo sync
después de ese empuje, obtendrá esos cambios desde el usuario original … siempre y cuando esté usando el mismo manifiesto y realmente empujando a la revisión por defecto (rama) especificada por ese manifiesto.
Esa es la receta más simple. Si quieres hacer ramas de funciones reales, entonces tendrás que editar tu manifiesto con más regularidad si quieres que la sincronización de repo sólo funcione … y tendrás que comunicarte al resto del equipo para tomar tu versión de El manifiesto cuando haces eso. Por otra parte, si es sólo uno o dos reposos git que está tocando, entonces podría renunciar a la sincronización de repo y git push / pull como normal en esos repos y ignorar el resto del árbol tranquilo para las veces que están iterando fuertemente. Esto suena, en última instancia a mí, como un camino más simple. Ignoro el repo tanto como puedas; Sólo usarlo para "todo el proyecto" se sincroniza y dejarlo solo para las veces que se está centrando en 1 o 2 proyectos.
En cuanto a obtener actualizaciones de aguas arriba. Creo que la forma de hacerlo es cambiar tu default.xml para que vuelva a su ubicación original de git (como android.googlesource.com), hacer una sincronización de repo para hacer que todas las cosas nuevas se fusionen, y una vez hecho con el Sincronizar, volver a realizar la copia de seguridad de su repo. No he hecho esto todavía; Así que no puedo ser demasiado específico, pero así es como pienso hacerlo.
Ignoro los detalles de la administración del servidor arriba. Por ejemplo, es necesario llamar al repo init en un determinado directorio de su servidor git para que sea un repositorio git disponible; Supongo que sabes cómo administrar tu servidor git.
- Múltiples instancias de Widget solamente Actualización del último widget
- Entrada y salida de audio inmediatas Android