2016-04-25 6 views
0

Ich versuche einen nächtlichen Prozess zu erstellen, der eine Liste von Dateien erstellt, die zwischen dem letzten Commit des vorherigen Tages und dem aktuellen HEAD eines Zweigs geändert wurden.Atlasstian/Stash Git Api - Ermitteln der Namen der zwischen commit geänderten Dateien

Ich habe am Stash api suchen, die hier gefunden werden kann:

https://developer.atlassian.com/static/rest/stash/3.11.3/stash-rest.html

Es sieht aus wie /compare/changes und die /diff die Aufgabe zu leisten imstande sein würde, aber ich kann sie nur bekommen für einzelne Commit-Änderungen arbeiten.

Gibt es eine Möglichkeit, es zu erweitern, damit ich alle Namen von Dateien zwischen mehreren Commits geändert bekommen kann?

Beispiel: Alle Dateien zwischen commit1 bis commit10?

Antwort

0

können Sie SHA geben sowohl für die an den git diff Befehl beteiligt Commits:

git diff --name-only SHA1 SHA2 

Dieser Beitrag liefert Informationen zur Verwendung .. und ..., um den Set erhalten Sie für möglicherweise suchen (wenn Sie für dieses Format gehen - using dot for diff between commits)

Hinweis: --name-only: Nur Namen geänderter Dateien anzeigen.

0

Ich sah nur an dieser kurz (und sie haben einige seltsame Terminologie, diese „Changesets“ anstelle von „commit“ IDs Aufruf: die sinnvoll für Mercurial, aber nicht für Git machen würde), aber die API tut Nimm zwei IDs und das ist alles was du brauchst.

Zum Beispiel in Ihrem Beispiel möchten Sie sehen, was

zwischen commit1 durch commit10

Das Wort "zwischen"

passiert ist, ist ein bisschen suspekt (weil Commits sind nicht notwendigerweise linear in der erste Ort, und weil es Zaunpfosten Fehler eingeführt), aber im Allgemeinen, um dies zu tun, vergleichen Sie einfach (die ID von) commit1 (oder seine Eltern, je nachdem, ob Sie Zaun Beiträge oder Zaun Schienen zählen) gegen (das ID von) commit10.

Wenn dies mit Git zu tun, anstatt über einige lästige REST-API, wird ausgedrückt als, zum Beispiel:

$ git diff --name-status 1fe9ca7 6631bed 

, die zeigt Ihnen alles in 6631bed geändert vs was in 1fe9ca7 war, die-aufgrund der Algebra der Änderungsmengen - ist die Summe jeder Änderungsmenge "zwischen" (es gibt wieder dieses glitschige Wort) der beiden Endpunkte.

Git speichert diese Änderungsmengen nicht; Es speichert den tatsächlichen Inhalt bei jedem Commit. Die Changesets werden daher auf Anfrage produziert (von git diff), weshalb ihre Terminologie ein wenig seltsam erscheint. Sie identifizieren zwei tatsächliche Commits, nicht ein Changeset und Git Extrakte ein Changeset.

0

Wie wäre es damit:

https://stash.domain.com/rest/api/latest/projects/{project}/repos/{repository}/changes?since={commit_1}&until=${commit_10}