2012-04-04 1 views
0

Je suis en train de développer un logiciel construit en plus d'un projet open source mais qui contient des modifications exclusives. Récemment, il y a eu une grosse mise à jour du projet open source qui a déplacé un tas de fichiers. Par exemple:Force git à reconnaître qu'un fichier a été déplacé lors de la fusion

app/modèles/my_model.rb -> app/modèles/espace de nom/my_namespaced_model.rb

Il y a beaucoup de fichiers qui ont été déplacés, et certains d'entre eux ont beaucoup de changements. Donc, git ne fusionne pas les fichiers, mais dit simplement que les anciens fichiers ont été "supprimés par eux" et marqués comme un conflit de fusion. Le fait est que, s'il y avait simplement quelques changements de moins pour que git puisse réaliser que le fichier avait été déplacé, plutôt que de penser qu'il était supprimé et qu'un nouveau a été créé, je pense qu'il réglerait facilement la plupart des changements. À l'heure actuelle, il semble que je doive passer à travers et apporter tous les anciens changements aux nouveaux fichiers à la main. Donc, ma question est, y at-il un moyen de forcer git à se rendre compte qu'un fichier a été déplacé quand il ne peut pas le comprendre automatiquement?

Répondre

1

La stratégie récursive que git merge utilise par défaut possède une option "rename-threshold" que vous pouvez modifier pour vous aider. Vous devrez peut-être expérimenter pour trouver le meilleur réglage.

git merge -X rename-threshold=70 mybranch 

Le réglage a le même effet que dans git diff -M et est décrit dans le git diff manpage.

+0

Je reçois ceci: "fatale: option inconnue pour fusionner-récursive: -Xrename-threshold = 70". J'ai aussi essayé d'utiliser des options telles que "ignore-space-change" parce que certains fichiers ont des changements d'indentation, mais ils ont la même erreur. J'utilise git 1.7.1 sur Ubuntu 10.10. Ai-je besoin d'une version plus récente? – alexsanford1

+0

Typo, c'est '-X ...' (avec un espace). – torek

+0

@torek: mise à jour. À l'avenir, n'hésitez pas à réparer les fautes de frappe vous-même. –

Questions connexes