2010-11-30 7 views
2

Voici la situation: J'ai hérité de deux machines distinctes, l'une utilisée pour le «développement» et l'autre pour la machine de production. Le problème: ils sont bien sûr désynchronisés. Afin d'améliorer la situation, j'ai créé des dépôts git indépendants du répertoire de l'application sur chaque machine. Je souhaite maintenant être en mesure de comparer ces repos afin que je puisse trouver ce qui est différent entre eux. Mon idée était de créer un troisième référentiel contenant deux branches, l'une provenant du référentiel de la machine «dev» et l'autre du référentiel de la machine «prod».Peut-on créer un dépôt git où les branches sont des clones provenant d'autres dépôts?

Est-ce possible ou une solution équivalente avec git?

Merci.

Répondre

3

Ceci utiliserait ce que Git appelle "remotes," qui sont des références à ce qu'un dépôt distant contient pour que vous puissiez l'extraire dans votre propre branche, pousser votre branche dans le dépôt distant, etc. Vous pouvez configurer un distance pour chacune des autres machines, puis diff entre eux pour les comparer, et vous pouvez créer une ou plusieurs branches locales à partir de ces télécommandes si vous voulez faire un travail local. Ce que je suggère pour votre situation est de cloner votre référentiel de développement, ce qui créera votre troisième référentiel dans lequel vous allez travailler, et de créer automatiquement un distant nommé origin qui pointe vers votre référentiel de développement (c'est le conventionnel nommez l'emplacement "amont" par défaut que vous allez tirer d'une poussée vers). Ensuite, ajoutez une télécommande pour prod, et maintenant vous pouvez les comparer et travailler avec eux localement. Par exemple:

git clone [email protected]:/path/to/repo.git 
cd repo 
git remote add prod [email protected]:/path/to/repo.git 
git remote update 
git diff origin/master prod/master 
+0

Ceci a fonctionné exactement comme décrit et est exactement ce que je cherchais. – Ketema

0

Le moyen le plus simple est de valider tous les changements en premier. Ensuite, créez une nouvelle branche en production appelée avec git branch production et git checkout production. Ensuite, déposez tous les fichiers de production sur dev et overwrite (moins les fichiers .git de production).

Maintenant, vous avez tous les changements par rapport à dev. Vous pouvez faire un diff git et voir les changements et l'état git pour voir les nouveaux fichiers et les fichiers qui ont changé. Validez-le et vous pouvez ralentir la fusion.

Je recommanderais cette méthode plutôt que l'ensemble de 2 choses de repo. C'est beaucoup plus facile quand vos dev et production sont dans le même repo.

Questions connexes