2016-04-25 3 views
0

Я пытаюсь создать ночной процесс, который создаст список файлов, измененных между последним фиксацией предыдущего дня и текущим HEAD ветви.Atlasstian/Stash Git Api - Получение имен файлов, измененных между фиксацией

Я смотрел на апи Stash, который можно найти здесь:

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

Похоже /compare/changes и /diff будет способна выполнить задачу, но я могу только получить их для работы для отдельных изменений фиксации.

Есть ли способ расширить его, чтобы я мог получить все имена файлов, измененных между несколькими коммитами?

Ex: Все файлы между commit1 через commit10?

ответ

0

Вы можете дать SHA для обеих фиксаций, участвующих в git diff команды:

git diff --name-only SHA1 SHA2 

Это сообщение содержит подробную информацию об использовании .. и ..., чтобы получить набор можно искать (если вы идете для этого формата - using dot for diff between commits)

Примечание: --name-only: Показать только имена измененных файлов.

0

Я только взглянул на этом коротко (и у них есть какая-то странные терминология, называя эту «ревизию» вместо идентификаторов «совершающих»: что будет иметь смысл для Mercurial, но не для Git), но API делает возьмите два идентификатора, и это все, что вам нужно.

Например, в вашем примере, вы хотите увидеть, что произошло

между commit1 через commit10

Слово «между» немного подозреваемым (потому что коммиты не обязательно линейны в первое место и потому, что оно вводит ошибки fencepost), но в целом для этого вы просто сравниваете (идентификатор) commit1 (или его родителя, в зависимости от того, считаете ли вы забор постов или забор рельсов) против (ID) commit10.

При этом с Git, а не по какой-то досадной REST API, это выражается как, например:

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

, который показывает вам все, что изменилось в 6631bed против, что было в 1fe9ca7, что-из-за алгебра наборов изменений - это сумма каждого набора изменений «между» (опять-таки это скользкое слово) двух конечных точек.

Git не сохраняет эти изменения; он сохраняет фактическое содержимое при каждой фиксации. Поэтому набор изменений создается по запросу (на git diff), поэтому их терминология кажется немного странной. Вы идентифицируете два фактических фиксации, а не набор изменений, а git затем выдержки a changeet.

0

Как об этом:

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