Supposons que j'ai un fichier "Changelog" dans la branche "Master". Je souhaite enregistrer des informations sur toutes les modifications de n'importe quelle branche de ce fichier (plus en détail que dans un message de validation et avec d'autres informations descriptives). P>
i i alors Ce que je voudrais, c'est que Changelog soit automatiquement la version la plus récemment modifiée irrévicilice em> quelle branche que j'ai vérifiée. Je ne veux pas fusionner manuellement (ou, très probablement oublier de fusionner) Changelog d'une autre branche dans ma branche actuelle. P>
Je n'ai rien trouvé qui semble permettre cela. Est-il possible de faire cela? P> git checkout -b reva code>, exécutez les modifications, mise à jour Changelog
et
git commit code>. p>
git checkout -b maître code>. Cette caisse remplacera Changelog avec la version dans la branche "Master". P>
4 Réponses :
Mettez-le dans un référentiel séparé et utilisez un Sumouule pour le lier dans chaque branche. P>
Écrivez un crochet post-validation pour fusionner le fichier dans les autres branches. http://kernel.org/pub/software/scm/git/docs/githooks.html p >
Cela fonctionnera et répondra à la question, donc je le donne à contrecœur +1, mais c'est une très mauvaise idée. Cela signifie que le changelog pour votre dernière version peut contenir des informations sur les modifications qui n'ont pas été publiées. Pourquoi voudrai-tu ceci?
Je ne le ferais pas, mais la question préside la situation qui vous intéresse. Je préférerais beaucoup brancher et fusionner explicitement.
@William - Les informations de ChangeLog sont conservées sont acceptables pour la libération.
Vous pouvez utiliser un crochet post-paiement:
#!/bin/sh newref="$2" isbranch="$3" # ignore file checkouts if test $isbranch -eq 0; then exit 0 fi path=ChangeLog git for-each-ref --sort=-committerdate \ --format='%(objectname) %(refname:short)' \ refs/heads/\* | while read sha ref; do if git rev-parse --verify --quiet "$sha:$path" >/dev/null then if test "$newref" != "$sha"; then echo Checking out $path from $ref git checkout $sha -- "$path" fi break fi done
C'est ce que je veux. Tu gères! Je suis capable d'avoir un fichier décrivant ce que mes branches contiennent et (à un niveau élevé) quels changements sont incorporés.
Je sais que cette réponse mendie la question, mais je pense que toute autre chose se prépare pour un mal de tête de maintenance. P>
Si vous mettez une description suffisante dans vos messages de validation, alors Depuis que j'ai déménagé à Git, j'ai abandonné le maintien d'un journal de changement manuellement. Pour moi, cela n'avait aucune valeur et coût important. P>
Il n'y a aucune raison de ne pas mettre des descriptions complètes dans les commits. Avec Git journal code> correspond à l'exigence. Tous les changements dans une branche particulière sont décrits exactement par les commits qui y vont et il est impossible d'être obsolète ou d'avoir des descriptions pour les changements qui ne l'ont pas été attribués. P>
- Modifier code> Vous pouvez réparer les erreurs d'orthographe et ajouter des détails, et si vous vous tenez à la convention d'avoir une brève ligne de sujet et une description plus complète, vous pouvez choisir entre les formats de journaux courts et longs. < / p>
Le changelog est à un niveau plus élevé que le journal Git, indiquant une branche particulière à peu près et d'autres informations de ce type qui seraient plus difficiles à glaner à partir de la sortie massive du journal Git.
@themis: Cela dépend certainement de ce que vous avez mis dans votre message de validation? Dans votre question, vous avez dit "plus en détail que dans un message de commettre" mais maintenant, vous dites "à un niveau plus élevé". Sont-ils compatibles?