Проблемы с Git в Azure DevOps Pipeline (CI) - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь обновить версию в файле .nuspec и .PSD1 и добавить комментарий к README.MD во время сборки.

Я следил за этим оченьполезная статья, которая обещает достичь этой цели, однако, мне интересно, если автор, Джастин Райс делает предположения, или, скорее всего, я не имею понятия.

У меня есть двафилиалы, осваивать и развивать, как локальные, так и удаленныеЯ фиксирую и нажимаю на разработку, которая запускает сборку.

Ниже приведен его скрипт git, который запускается после того, как другая задача изменила три файла:

git config --global user.email "VssAdministrator@factoryvm-az459.(biib)"
git config --global user.name "VSTS Admin"
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/master (
   ECHO Building master branch so no merge is needed.
   EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO ADDING CHANGES FROM PIPELINE
git branch %sourceBranch%
ECHO ADDING MODIFIED FILES
git add --all
ECHO CREATING COMMIT
git commit -m "Changes made from Pipeline"
ECHO CHECKING MASTER
git reflog
git checkout -b master HEAD@{0}
git pull --strategy recursive -X theirs origin %BUILD_SOURCEBRANCH%
git pull --strategy recursive -X ours origin master
git add --all
git commit -m "Added from VSTS Pipeline"
git push origin master

Первая строка проблемыgit branch %sourceBranch%.У меня уже есть ветвь develop, а %sourceBranch% разрешается в origin/develop.Ошибка: fatal: A branch named 'origin/develop' already exists.Я не понимаю, зачем нужно создавать новую ветку.Вместо этого я пробовал с `git checkout origin / development, но это не помогает.

Следующая строка - git checkout -b master HEAD@{0}.Опять же, у меня есть основная ветка, и я получаю сообщение об ошибке fatal: A branch named 'master' already exists..

Я думаю, что эта строка пытается создать новую ветвь на основе отсоединенной головки (bc49db5) HEAD @ {0}, но яне очень понимаю В другой статье (см. Цитату ниже) предлагается, чтобы все было наоборот: git checkout -b HEAD@{0} master

Я уже несколько дней ломал голову над этим, но безрезультатно,Если кто-нибудь может объяснить, что происходит или что я делаю неправильно, я был бы очень признателен.

PS Полный вывод (с дополнительными комментариями) следующий:

git version 2.21.0.windows.1
====== listing branches ======
* (HEAD detached at 504cd36)
  master
  origin/develop
  remotes/origin/develop
  remotes/origin/master
SOURCE BRANCH IS refs/heads/develop

====== ADDING CHANGES FROM PIPELINE ======
fatal: A branch named 'origin/develop' already exists.

====== ADDING MODIFIED FILES ======
====== COMMITTING ======
[detached HEAD bc49db5] Changes made from Pipeline
 3 files changed, 17 insertions(+), 15 deletions(-)
 rewrite PSAdminTools.nuspec (75%)

====== CHECKING MASTER ======
bc49db5 HEAD@{0}: commit: Changes made from Pipeline
504cd36 HEAD@{1}: checkout: moving from master to 504cd363ed2a7a1d9fa81ccc3a1a51790393cc27
04e8856 HEAD@{2}: reset: moving to HEAD
04e8856 HEAD@{3}: pull --strategy recursive -X theirs origin refs/heads/develop: Fast-forward
86ca92a HEAD@{4}: checkout: moving from 7cf28c87edc068fb13cf1a7db3f15592fa717da3 to master
7cf28c8 HEAD@{5}: commit: Changes made from Pipeline
04e8856 HEAD@{6}: checkout: moving from master to 04e88560932f8999c0f8c9a49c691901b381d036
86ca92a HEAD@{7}: reset: moving to HEAD
86ca92a HEAD@{8}: checkout: moving from a9362489e83f5b90e3b72fff990431bb6b3d9bd5 to master
a936248 HEAD@{9}: commit: Changes made from Pipeline
f85c694 HEAD@{10}: checkout: moving from master to f85c69464cdd0e9b87cd87628421e93168c5a604
86ca92a HEAD@{11}: reset: moving to HEAD
86ca92a HEAD@{12}: pull --strategy recursive -X theirs origin refs/heads/develop: Fast-forward
390d32e HEAD@{13}: checkout: moving from 8be7772ba3f03789ae8db8626d4240333d35c576 to master
8be7772 HEAD@{14}: commit: Changes made from Pipeline
86ca92a HEAD@{15}: checkout: moving from master to 86ca92a7b1ced170344a7240e6b5df95cfee36d4
390d32e HEAD@{16}: reset: moving to HEAD
390d32e HEAD@{17}: checkout: moving from 90bee5c560baf51ba69bb199750b73344d41117a to master
90bee5c HEAD@{18}: commit: Changes made from Pipeline
390d32e HEAD@{19}: checkout: moving from master to 390d32e58f9306397c917f90f57c43a795a86c09

====== Checking out master =======
fatal: A branch named 'master' already exists.

====== Pulling from their refs/heads/develop =======
From https://blah.visualstudio.com/PSAdminTools/_git/PSAdminTools
 * branch            develop    -> FETCH_HEAD
Already up to date.

====== Pulling from ours master =======
From https://blah.visualstudio.com/PSAdminTools/_git/PSAdminTools
 * branch            master     -> FETCH_HEAD
Already up to date.

====== Current branch ======
* (HEAD detached from 504cd36)
  master
  origin/develop
  pipeline

====== Adding files ======
====== Committing to master =======
HEAD detached from 504cd36
nothing to commit, working tree clean

======= Pushing to master ======
Everything up-to-date

======= Git Status =======
HEAD detached from 504cd36
nothing to commit, working tree clean

git checkout -b {новая ветвь} {существующая ветвь}

По умолчанию git checkout -b будет основывать новую ветвь от текущего HEAD.Необязательный дополнительный параметр ветви может быть передан в git checkout.В приведенном выше примере передается, который затем основывает новую ветвь от существующей ветки вместо текущей HEAD.

Обновление 20/05/2019

Я, кажется, получилэто работает, хотя я понимаю, что делают мои изменения, я до сих пор не понимаю, зачем эти изменения нужны.Другими словами, почему авторский код скрипта работает, а мой - нет (предполагая его работы).

Измените 1: git branch %sourceBranch% на git branch -f %sourceBranch%

Измените 2: git checkout -b master HEAD@{0} на git checkout -B master HEAD@{0}

Мое начальное рабочее состояние имеет две ветви: master и develop, как локальную, так и удаленную.

Вывод git pull --strategy recursive -X theirs origin %BUILD_SOURCEBRANCH% по-прежнему говорит Already up to date.

Вывод git commit -m "Added from VSTS Pipeline" говорит nothing to commit, working tree clean.

Я не добавляю это обновление в ответ, как будто я разблокированЯ все еще хочу понять, что происходит.то есть я не ответил на мой вопрос.

...