
Il arrive souvent qu'un développeur accumule au fil du temps une collection de code qu'il utilise dans ses projets.
Il utilise certains scripts dans certains projets, d'autres dans d'autres.
Ces scripts sont améliorés au fil du temps, les bogues sont supprimés et optimisés. Par conséquent, la question se pose de
savoir comment synchroniser les nouvelles versions de scripts avec celles des projets .
Il existe plusieurs options:
La première option:Créez un référentiel et placez-y tous les scripts. Ensuite, ce référentiel est connecté en tant que sous-module au projet et utilisé.
Inconvénients:
- Tous les scripts, y compris ceux inutiles, sont copiés dans le projet.
- le sous-module n'est pas validé dans le référentiel du projet, donc si le référentiel distant du sous-module n'est pas disponible, nous ne pourrons pas télécharger l'intégralité du projet.
La deuxième option:Chaque script doit être stocké séparément sur Github gist et connecté selon les besoins en tant que sous-modules
Le moins est le même que dans la première version du deuxième paragraphe.
La troisième option:Utilisez
Git Subtree.(Cette solution est une alternative aux sous-modules Git)
La sous -
arborescence Git est une autre méthode de fusion de branches. Son idée est qu'ayant deux branches, git comprendra qu'une branche n'est pas une variation de l'autre, mais un ajout.
Idée générale:
- - ajouter le fichier à Github gist (un mini-dépôt est généré)
- - lier le mini-référentiel à notre projet en tant que branche distincte
- - attribuer un dossier à cette branche
- - dégonfler.
- - puis on travaille comme avec une branche régulière (fusion, commit, fetch ...)
Maintenant, détails sur l'utilisation des extensions Git.
1) Nous publions notre fichier avec le code sur
https://gist.github.com où nous pouvons immédiatement obtenir un lien vers le "mini" référentiel:

Ouvrez le référentiel de notre projet dans GitExtensions et sélectionnez:
[Référentiel] -> [Référentiels distants ...]
Nous nous connectons en tant que branche distincte.
Pour ce faire, appuyez sur
[+] . Saisissez
[Nom] ,
[Url] et enregistrez
[Enregistrer les modifications] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

Nous voyons que nous sommes connectés au référentiel distant.
Ensuite, nous devons associer cette branche à un dossier spécifique dans notre projet afin que le fichier y soit copié.
Pour ce faire, ouvrez Git-bash (ctrl + G) et exécutez la commande:
$git read-tree --prefix=Client/Assets/ -u Util1/master
où:
Client / Actifs / - chemin vers le dossier dans lequel le fichier sera copié
Util1 / master - le nom de la branche du référentiel distant
(Je n'ai pas trouvé de chemin à travers l'interface utilisateur)
La branche gist est attachée à notre dossier dans le projet. Et le dossier est déjà là.
Maintenant, nous pouvons travailler comme avec une branche régulière.Par exemple, si un fichier change dans Gist, nous pouvons obtenir une nouvelle version:
Nous
récupérons tout et voyons tous les changements:
$git fetch --progress "--all"
Ensuite, nous fusionnons pour combler les changements dans notre branche:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

Résultat:
Information complémentaire:https://git-scm.com/book/en/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees