Git: entdecken Sie verpflichtet, die jemals berührt eine Reihe von Linien

Ich habe Schwierigkeiten, herauszufinden, wie man git blame für immer der Reihe von commits, die immer berührt einem bestimmten Bereich von Zeilen. Es gibt ähnliche Fragen wie diese eine aber die akzeptierte Antwort nicht bringen mich viel weiter.

Sagen wir, ich habe eine definition, die beginnt in Zeile 1000 von foo.rb. Es ist nur 5 Zeilen lang, aber die Anzahl von commits, die jemals verändert diese Zeilen, ist enorm. Wenn ich

git blame foo.rb -L 1000,+5

Ich Verweise auf (höchstens) fünf verschiedene commits geändert, dass diese Zeilen, aber ich bin auch daran interessiert, die verpflichtet "dahinter".

Ähnlich,

git rev-list HEAD -- foo.rb | xargs git log --oneline

ist fast das, was ich will, aber ich kann nicht angeben, reicht, um git rev-list

Kann ich passiere ein flag zu git blame aus, um die Liste von commits, die jemals berührten die fünf Linien, oder was ist der Schnellste Weg, ein Skript erstellen, dass Extrakte solche Informationen? Wir ignorieren für den moment die Möglichkeit, dass die definition hatte einmal mehr oder weniger als 5 Zeilen.

  • Sind Sie sicher, dass dies ist, was Sie wollen? Die Ermittlung von änderungen mit Zeilennummern funktioniert nur für einen gegebenen Zustand der Datei. Wenn Sie möchten, Zeilen 15 - 20 für den commit 12345 den code auf die Zeilen auf Zeilen 55 - 60 für commit 12345^.
  • Ziemlich sicher. Das ist, warum ich brauchen, um ein Skript zu schreiben, dass erkennt, dass auch, dass. Immer noch davon ausgehen, der Einfachheit halber, dass die definition hat sich auch nie bewegt in der Datei von der ersten commit in das repo.
  • möglich, Duplikat der Abrufen von commit-log für eine bestimmte Zeile in einer Datei?
  • Ich glaube, das ist ein Duplikat von stackoverflow.com/questions/8435343/...
InformationsquelleAutor Joao Tavora | 2013-01-03
Schreibe einen Kommentar