1.4 Mise au point sur les chemins vers les dépos

Il y a un fichier important dans git, c'est le fichier config, c'est lui qui permet de dire ou sont les dépos, et quelles branches y sont reliées.

Alors, faisons une comparaison de ces deux fichiers :

Du côté d'Alice

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true

Du côté de Bob

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = /chemin/vers/Bob/../Repository/Alice.git/
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

Il semble qu'Alice se soit fait arnaquée. La question est pourquoi ?

Tout cela est pour vous dire que le clonage ne renseigne les chemins que vers le dépos qui reçoit les données, que ce soit Alice -> Repository ou Repository -> Bob, c'est le destinataire qui connaît les chemins vers les dépos.

Mais alors, comment je fais pour le dépos Alice ?

Heureusement il existe une commande qui fait cela pour nous, (même si on peut écrire ça à la main dans .git/config) :

git remote add origin ../Repository/Alice.git/

Nous pouvons refaire notre comparaison :

Du côté d'Alice

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = ../Repository/Alice.git/
	fetch = +refs/heads/*:refs/remotes/origin/*

Du côté de Bob

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = /chemin/vers/Bob/../Repository/Alice.git/
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

Ça va mieux du côté d'Alice, mais ce n'est pas encore ça.

En fait je vous dis ça, mais nous verrons le pourquoi tout à l'heure, pour l'instant regardez les branches :

Du côté d'Alice

git branch 
* master

Du côté de Bob

git branch 
* master

Ce sont les mêmes, la branche principale s'appelle toujours master, mais pour Alice c'est la branche par défaut, ce n'est donc pas la peine de le dire dans le fichier .git/config, alors que, lors d'un clonage, la branche est toujours précisée.

Nous verrons plus tard dans l'exemple, que cela pose un problème pour les git pull d'Alice.