Comment le Android repo manifeste référentiel de travail?
La Source Android est un grande hiérarchie de dépôts git. Ils sont gérés par un script personnalisé appelé repo. Repo qui détermine les dépôts git pour gérer à l'aide d'un manifest.xml. Le manifest.xml de Android est hébergé dans un dépôt git avec tous les autres dépôts git.
Comment est-ce dépôt géré dans Android? Précisément comment sont les différentes branches et les différents fichiers hébergés dans chaque branche organisé?
Vous devez vous connecter pour publier un commentaire.
D'abord, les pensions de init crée la
.repo
répertoire, les clones git https://android.googlesource.com/tools/repo à.repo/repo
, et le dépôt git spécifié avec la-u
option pour un dépôt nu à.repo/manifests.git
. Après cela, il crée le.repo/manifests
répertoire, il se transforme en un dépôt git à travers la création de liens symboliques de.repo/manifests/.git
à.repo/manifests.git
. Il vérifie ensuite la direction spécifiée dans-b
, et crée un lien symbolique.repo/manifest.xml
pointant vers le fichier spécifié (-m
option) dans.repo/manifests
, par défaut.repo/manifests/default.xml
.À peu près comme suit:
Vous pouvez suivre ce qui se passe vraiment avec
repo --trace init ...
Ensuite, les pensions de synchronisation des clones dépôts git à
.repo/projects
pour chaque projet dansmanifest.xml
etlocal_manifest.xml
, crée des répertoires avec.git
ayant des liens symboliques à la correspondante de dépôt nu, vérifie la branche spécifié dans le manifeste, et les mises à jour.repo/project.list
. Le cas où les projets sont déjà là, c'est légèrement différent, essentiellement de l'exécution d'unegit pull --rebase
..git
contenu à l'intérieur de.repo/projects/
?repo
a choisi l'approche qu'ils ont fait. Avec certaines versions derepo
, il était possible de partager la.repo/projects
répertoire entre les différents construire des arbres, qui a été une sorte de pratique sur un portable avec un petit disque dur. Mais qui n'a jamais été pris en charge, et je ne suis pas sûr si cela fonctionne plus.À la racine de l'opération est un répertoire caché nommé ".repo", à l'intérieur, vous trouverez un git projet nommé "manifeste" qui contient généralement un fichier nommé "default.xml". Ce fichier contient des informations sur tous les projets et où leurs associés dépôts git sont situés. Ce fichier est également versionnées ainsi, lorsque vous utilisez le "repo init -b XYZ de la commande", il reprend et vous pouvez revenir sur les branches âgées qui peuvent avoir ajouté/supprimé git projets par rapport à la tête.
Voici un lien vers le repo repo git document décrivant le manifeste format:
https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.txt