2017-07-18 6 views
1

Dans deux tests engage, dans lequel la première avait que l'opération git mv file moved_file, et la seconde seulement mv moved_file moved_again_file && git add -A moved_file moved_again_file, les deux apparaissent comme renomme dans git status avant de commettre, mais dans git commit --verbose ils Afficher en tant que fichiers nouveaux et supprimésPourquoi show diff-tree git montrent toujours renommer comme ajouter et supprimer des

Je me attends git diff-tree HEAD après chaque livraison à afficher un état R (renommer), mais je continue à avoir deux: un A et un D. J'essaie d'écrire un script qui va effectuer des actions basées sur les statuts des fichiers mais je ne peux pas planifier correctement les statuts R (ou C) s'ils apparaissent toujours comme ajouter/supprimer.

Git est la version 1.8.3.1, si cela fait une différence.

Répondre

3

La commande est une commande git diff-treeplomberie, pas une commande porcelaine, de sorte qu'il ait un comportement prévisible. L'une d'entre elles est que la détection du changement de nom est , sauf si elle est explicitement activée. Comparez ceci avec, par exemple, git diff, qui est une commande porcelaine et par conséquent définit la détection de renommer en fonction de votre configuration personnelle pour diff.renames.

Pour que la détection de renommer soit activée, ajoutez -M ou --find-renames (et leurs seuils facultatifs). Utilisez -C ou --find-copies (avec leurs seuils optionnels) pour trouver des copies; ajouter --find-copies-harder si désiré.

+0

Je sais que c'est une commande de plomberie, c'est pourquoi je l'utilise pour la saisie. Je ne savais tout simplement pas que ces options devaient être activées car la page man ne contient rien à ce sujet dans la section 'RAW OUTPUT FORMAT', ni plus à propos de chaque option en dehors de leurs descriptions. – Walf

+0

Oui, la documentation ... eh bien, pour ne pas trop insister là-dessus, ça craint :-) C'est particulièrement mauvais dans le sens où beaucoup de commandes générant des différences ont des comportements par défaut différents dans certains des cas les plus difficiles, mais il n'y a nulle mention de cela nulle part. – torek