2010-08-31 5 views
2

J'ai un projet sur github.com. Tout l'été j'ai fait des commits. Maintenant j'ai besoin de tous les chemins.Obtenir des collections de diffs

Je sais que je peux:

git log -p > project.path 

Mais cette variante écrire tous pathes dans un seul fichier. Comment puis-je faire:

J'ai 3 fichiers dans le dépôt github:

  • Test.c

  • test1.c

  • test2.c

Comment puis-je obtenir 3 fichiers avec tous les chemins?

  • test.diff

  • test1.diff

  • test2.diff

Merci

+0

"chemin" = "patch"? –

Répondre

1

Vous pouvez utiliser git format-patch pour créer une séquence de patchs de vos validations (un patch par commit).

1

Je ne peux pas penser à une véritable façon automatisée de le faire, mais cela a fonctionné pour moi sur un système unix.

Pour commencer, vous devez avoir l'ID de la première validation dans votre projet, prétendre que c'est 123abcd (est-ce que quelqu'un sait d'une manière automatisée pour obtenir ceci?).

Une fois que vous avez l'identifiant du premier commit vous pouvez juste boucle sur les fichiers qui ont changé depuis la première COMMIT et exécuter un diff sur chacun:

for file in `git diff --name-only 123abcd`; do 
    git diff 123abcd ${file} > `basename ${file}.patch` 
done 

ce que cela signifie:

git diff --name-only 123abcd 

vous donnera une liste de tous les fichiers qui ont changé depuis la révision 123abcd

git diff 123abcd ${file} > `basename ${file}.patch` 

Génère le diff actuel et l'enregistre dans le nom du fichier sans le chemin d'accès.

Lorsque vous avez terminé, votre répertoire de travail actuel doit contenir tous vos fichiers .patch.

Questions connexes