Petit problème gitignore

J'ai un problème sur un projet sur lequel je bosse avec des potes.
On est en train de monter un petit framework php et dans le projet on a un dossier avec des fichiers de config yml (relatifs à la bdd entre autres, pour simplifier je ne vais parler que d'un fichier).
Comment faire pour que ce fichier yml existe toujours sur le repo en ligne mais ne soit plus suivi localement?

C'est à dire sur nos repos locaux on puisse modifier ce fichier sans que les modifications soient prises en compte une fois que l'on push nos commits sur notre serveur gitlab (raspberry <3).

Mon gitignore (dans le dossier principal) contient:
src/config/yaml/database.yml

Pour que le fichier gitignore soit pris en compte et fonctionne j'ai fait:
git rm --cached src/config/yaml/database.yml (sans cette commande la modification de database.yml n'est pas ignorée)
http://fr.gitready.com/beginner/2009/03/06/ignoring-doesnt-remove-a-file.html

Là le gitignore fonctionne bien mais si je push, database.yml aura disparu sur le repo en ligne(ce qui est logique vu la dernière commande exécutée) et ce n'est pas ce que je souhaite. Je veux garder une version de database.yml sur le repo en ligne.

Bisous

TL:DR Je souhaite qu'un fichier continue d'exister sur un repository en ligne mais que les modifications de ce dernier soit ignorées localement (pas prises en compte par Git)

Poster un commentaire
anonyme
anonyme
7 ans

Et le TL:DR hein ???

Gigowatt
Gigowatt
7 ans

@Kayden: C'est fait

anonyme
anonyme
7 ans

@Gigowatt:

GIF
GIF
Appineos
Appineos
7 ans

Si tu ne fait pas le git rm ca règle pas le souci ? Ou alors revert le commit qui contient la suppression du fichier

Gigowatt
Gigowatt
7 ans

@Appineos: Nope

Appineos
Appineos
7 ans

@Gigowatt:
git add lefichier
tu le met à l'état que tu le veut sur le repo
git commit & push
tu le rajoute dans le gitignore
git rm lefichier

Pas sûr mais ça devrait le faire

Gigowatt
Gigowatt
7 ans

@Appineos: Justement non j'ai essayé, c'est pour ça que ce problème m'agasse. Pour que ça fonctionne git rm --cached obligatoire :S (ou alors j'ai fait une fausse manip quelque-part mais je ne la vois pas)

Gigowatt
Gigowatt
7 ans

@Appineos: Je testerai demain (enfin tt à l'heure) et donnerai des nouvelles, ça a l'air prometteur en tout cas

Gigowatt
Gigowatt
7 ans

@Appineos:
git update-index --assume-unchanged nomfichier.truc
git update-index --no-assume-unchanged nomfichier.truc

Le duo gagnant ! Merci bro'

anonyme
anonyme
7 ans

Tu ne vois pas le problème sous le bon angle.
Je te conseille de faire en sorte que le fichier ne soit justement pas sur le repo, et de le créer directement sur le serveur de production (par exemple).
Inspirez vous du parameter.yml de symfony qui est ignoré par git de base, et est créé lors du deploiement de l'application.

Gigowatt
Gigowatt
7 ans

@rekted: Merci de ta réponse mais qu'est ce que tu entends par crée lors du déploiement de l'application (j'ai juste quelques notions de symfony)? Quand tu télécharge symfony, parameter.yml est bien dans gitignore mais pour autant le fichier parameter.yml existe bien de base dans app/config (ce que je souhaite accomplir en fait).

Ou alors j'ai mal compris, ce que tu me dis c'est que lors de l’installation de symfony ce fichier parameter.yml est généré par php et n'est pas présent de base dans les dépots en ligne c'est ça ? Merci et désolé si la question est idiote

anonyme
anonyme
7 ans

@Gigowatt: en gros le parameter.yml de symfony n'est pas versionné car il est propre à chaque déploiement. Tu le configure au début de la mise en place, ce qui te permet de ne changer que ce fichier là pour changer de configuration, sans créer de conflit inutile sur le git.

Offerzo
Offerzo
7 ans

Tu mets le fichier dans ton grignote et après tu fais une fois un git add -f doublefaciale.yml

Gigowatt
Gigowatt
7 ans

@Offerzo: Nope avec git add -f doublefaciale.yml, les modifs du fichiers sont de nouveau trackées. Je vais test la soluce d'Appineos

EDIT:
la soluce
git update-index --assume-unchanged nomfichier.truc
git update-index --no-assume-unchanged nomfichier.truc

Simmstein
Simmstein
7 ans

La meilleurs solution est de faire un fichier ce config type : si ton fichier de conf est "database.yml", alors tu vas versionner un fichier "database.yml-dist". Ainsi, tu pourras faire évoluer le niveau de configuration en concervant le versionning. Ça sera de la responsabilité du développeur d'alimenter le fichier "database.yml".

Gigowatt
Gigowatt
7 ans

@Simmstein: database.yml-dist c'est un fichier d'exemple versionné et c'est localement qu'on adapte ce fichier en créant database.yml qui lui sera ignoré (si j'ai bien compris). Pas con, j'aime l'idée.

Simmstein
Simmstein
7 ans

@Gigowatt: affirmatif. C'est comme ça que fonctionne symfony par exemple.

Bisb
Bisb
7 ans

Regarde plutôt côté utilisateur, chaque utilisateur peut avoir un gitignore global sur sa machine :

http://www.geekyboy.com/archives/980

Après j'ai pas cherché si c'est possible de ne l'attribuer qu'à un seul repo mais j'imagine qu'en fouillant c'est possible

Cette page est réservée aux ADULTES

Tu es sur le point d'accéder à un site web qui contient du matériel explicite (pornographie).

Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.


En accédant à ce site, tu acceptes nos conditions d'utilisation.