Clonez plusieurs référentiels dans la structure de dossiers parent commune

Mon problème est que j'ai un client, appelons-les "Evil Corp", qui fournit à mon entreprise beaucoup d'affaires grâce à divers projets, que nous utilisons GitHub repos pour. Prenons 2 et appelons-les 'TotallyNotPolluting' et 'CoveringUpPolluting'.

Je voudrais que mes employés puissent cloner le repo 'TotallyNotPolluting' dans un dossier 'EvilCorp' par défaut lors du clonage.

Comportement:

Donc, la structure de départ est:

E: --Work --Repos 
  1. Avoir la structure de dossier de départ: E:\Work\Repos pour commencer
  2. Dans Git Bash / GitHub Desktop / quel que soit le clone, le repo 'TotallyNotPolluting' (l'location sélectionné est la structure du dossier de départ E:\Work\Repos )
  3. Avoir une structure de dossier de fin: E:\Work\Repos\EvilCorp\TotallyNotPolluting
  4. Dans Git Bash / GitHub Desktop / quel que soit le clone, le repo 'CoveringUpPolluting' (l'location sélectionné est la structure du dossier de départ E:\Work\Repos )
  5. Avoir une structure de dossier de fin: E:\Work\Repos\EvilCorp\CoveringUpPolluting

Donc, la structure finale est:

 E: --Work --Repos --EvilCorp --TotallyNotPolluting --CoveringUpPolluting 

De cette façon, tous les repos sont organisés en dossiers clients sans que les employés prennent des mesures supplémentaires pour le faire.

Est-ce possible? Pour créer l'action Clone, puis cloner dans (si ce n'est pas le cas) ou cloner dans (le cas échéant) un directory parent?

NOTE: J'ai cherché à utiliser des sous-modules, mais je ne veux pas de référentiel "EvilCorp" qui contient d'autres repositorys. Je veux juste le dossier lors du clonage.

Solutions Collecting From Web of "Clonez plusieurs référentiels dans la structure de dossiers parent commune"

Vous pouvez écrire un script comme ci-dessous. Je ne l'ai pas testé correctement mais cela devrait vous donner la bonne direction pour le déplacer. Le but de ce script shell est de créer un directory parent puis de créer individuellement chaque sous-dossier, vérifiez si le sous-dossier est vide. Si vide, cloner le repo. Ce script shell peut être dissortingbué aux employés sous la forme d'un exécutable puis, lorsqu'il est exécuté, clone les repos aux bons endroits.

 #create the directory, if it does not exist directoryName="<your directory name here>" mkdir -p directoryName repos="TotallyNotPolluting CoveringUpPolluting" forwardSlash="/" #go into directory pushd $directoryName for repo in $repos; do #check if directory is not present, if true, create the directory [ ! -d $repo ] && mkdir -p $repo #go into directory currentDirectory=$directoryName$forwardSlash$repo if [ "$(ls -A $currentDirectory)" ]; then echo "directory is not empty, skipping to clone" else pushd $directoryName$forwardSlash$repo git clone "git@$codeHost:$codeUser/$repo.git" fi done 

Avoir un super projet contenant juste des sous-modules (si vous voulez vraiment que git le sache, ça ne marche pas bien dans mon expérience).

Au lieu de cela, ayez un super projet contenant juste un script "check out out" que l'user peut ensuite exécuter et qui donne les repositorys que vous voulez.