Ссылка 'головы подмодуля мерзавца не является древовидной' ошибкой

кажется, что нет предопределенного глобального var для прямого доступа к информации о стадиях в Pipeline.

https://opensource.triology.de/jenkins/pipeline-syntax/globals

301
задан mikemaccana 31 January 2012 в 09:27
поделиться

3 ответа

Предполагая Репозиторий подмодулем содержит обязанности, который вы хотите использовать (в отличие от фиксации, который ссылается из текущего состояния суперпроекта), есть два способа сделать это.

Первым требует, чтобы вы уже знаете коммит от подмодуля, который вы хотите использовать. Он работает от «внутри, OUT», непосредственно регулируя подмодулю, затем обновляя суперпроект. Вторая работа работает от «снаружи», найдя коммит Super-Project, которая модифицировала подмодулю, а затем сбрасывая индекс суперпроекта для обозначения другого коммитата подмодула.

Внутри, OUT

Если вы уже знаете, какие коммита вы хотите, чтобы подмодуль использовать, CD к подмодулю, проверьте завод, который вы хотите, то Git Add и GIT Commit Это обратно в суперпроект.

Пример:

$ git submodule update
fatal: reference is not a tree: e47c0a16d5909d8cb3db47c81896b8b885ae1556
Unable to checkout 'e47c0a16d5909d8cb3db47c81896b8b885ae1556' in submodule path 'sub'

Опс, кто-то сделал суперпроект, который относится к неопубликованному фиксации в подмодуле Sub . Каким-то образом мы уже знаем, что мы хотим, чтобы подмодуль находился в Commit 5D5A3EE314476701A20F2C6EC4A53F88D651DF6C . Иди туда и проверьте его напрямую.

Оформить заказ в подмодуле

$ cd sub
$ git checkout 5d5a3ee314476701a20f2c6ec4a53f88d651df6c
Note: moving to '5d5a3ee314476701a20f2c6ec4a53f88d651df6c' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at 5d5a3ee... quux
$ cd ..

, поскольку мы проверяем коммит, это создает отдельную голову в подмодуле. Если вы хотите убедиться, что подмодуль использует ветку, затем используйте GIT Checkout-s newbranch для создания и оформления филиала в филиале или забронировать филиал, который вы хотите (например, желаемый коммит на кончике).

Обновить Super-Project

Оформить заказ в подмодуле отражена в суперпроекте как изменение рабочего дерева. Поэтому нам нужно выполнить изменение индекса суперпроекта и проверить результаты.

$ git add sub

Проверьте результаты

$ git submodule update
$ git diff
$ git diff --cached
diff --git c/sub i/sub
index e47c0a1..5d5a3ee 160000
--- c/sub
+++ i/sub
@@ -1 +1 @@
-Subproject commit e47c0a16d5909d8cb3db47c81896b8b885ae1556
+Subproject commit 5d5a3ee314476701a20f2c6ec4a53f88d651df6c

Обновление подмодуля молчало, потому что подмодуль уже в указанном Commit. Первый разфер показывает, что индекс и рабочая работа одинаковы. Третья дифференцировка показывает, что только поэтапное изменение перемещается в подмодуле субмодуля для другого коммитария.

Commit

git commit

Это совершает ввод подмодуля фиксированного субмодуля.


Снаружи, в

Если вы не уверены, какие коммит вы должны использовать из подмодуля, вы можете посмотреть историю в SuperProject, чтобы направить вас. Вы также можете управлять сбросом непосредственно из суперпроекта.

$ git submodule update
fatal: reference is not a tree: e47c0a16d5909d8cb3db47c81896b8b885ae1556
Unable to checkout 'e47c0a16d5909d8cb3db47c81896b8b885ae1556' in submodule path 'sub'

Это та же ситуация, что и выше. Но на этот раз мы сосредоточимся на исправлении его от суперпроекта вместо того, чтобы погружать в подмодуль.

Найти ошибочный коммит суперпроекта

$ git log --oneline -p -- sub
ce5d37c local change in sub
diff --git a/sub b/sub
index 5d5a3ee..e47c0a1 160000
--- a/sub
+++ b/sub
@@ -1 +1 @@
-Subproject commit 5d5a3ee314476701a20f2c6ec4a53f88d651df6c
+Subproject commit e47c0a16d5909d8cb3db47c81896b8b885ae1556
bca4663 added sub
diff --git a/sub b/sub
new file mode 160000
index 0000000..5d5a3ee
--- /dev/null
+++ b/sub
@@ -0,0 +1 @@
+Subproject commit 5d5a3ee314476701a20f2c6ec4a53f88d651df6c

ОК, похоже, он выглядел плохо в CE5D37C , поэтому мы восстановим подмодуль со своего родителя ( CE5D37C ~ ).

В качестве альтернативы вы можете взять коммитацию субмодула из текста патча ( 5D5A3EE314476701A20F2C6EC4A53F88D651DF6C ) и вместо этого используйте вышеупомянутый «внутренний, OUT».

Оформить заказ в супер-проекте

$ git checkout ce5d37c~ -- sub

Это сброс ввода подмодуля для под к тому, что он был при совершении CE5D37C ~ в суперпроекте.

Обновить подмодулю

$ git submodule update
Submodule path 'sub': checked out '5d5a3ee314476701a20f2c6ec4a53f88d651df6c'

Обновление подмодуля поехало хорошо (он указывает на отдельную головку).

Проверьте результаты

$ git diff ce5d37c~ -- sub
$ git diff
$ git diff --cached
diff --git c/sub i/sub
index e47c0a1..5d5a3ee 160000
--- c/sub
+++ i/sub
@@ -1 +1 @@
-Subproject commit e47c0a16d5909d8cb3db47c81896b8b885ae1556
+Subproject commit 5d5a3ee314476701a20f2c6ec4a53f88d651df6c

Первые разные показывает, что Sub теперь одинаково в CE5D37C ~ . Второй разфер показывает, что индекс и работник одинаковы. Третья дифференцировка показывает, что только изменение поэтации перемещается в подмодуле Sub в другой коммит.

Commit

git commit

Это совершает ввод подмодуля фиксированного субмодуля.

376
ответ дан 23 November 2019 в 01:27
поделиться

Ваша ветка может быть не в курсе, простое решение, но попробуйте git fetch

2
ответ дан 23 November 2019 в 01:27
поделиться

.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <!--The ID below indicates application support for Windows Vista -->
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
    <!--The ID below indicates application support for Windows 7 -->
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    <!--The ID below indicates app support for Windows 8 -->
    <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!--The ID below indicates app support for Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
  </application>
</compatibility>

GUID для всех операционных систем в предыдущем примере обеспечивают поддержку нижней уровне. Приложения, которые поддерживают несколько платформ, не требуют отдельных проявлений для каждой платформы.

взяты из приложения (исполняемого) манифеста .

-121--1148695-

Ваша история подмодуля безопасно сохраняется в подмодуле Git в любом случае.

Итак, почему бы не просто удалить подмодуль и добавить его снова?

В противном случае вы пытались вручную редактировать голову или в подмодуле .GIT

1
ответ дан 23 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: