Вот ответ от одного из моих коллег. Я думаю, что это позор, который мы не могли найти более простым способом ...
............................ .......................................
Относительно «сломанного» рабочего пространства: идея состоит в том, чтобы найти git repo, который Дженкинс клонировал и запустить ту же команду, что и он, чтобы увидеть, можем ли мы воспроизвести ошибку.
Во-первых, мы использовали команду find
, чтобы найти все .git
каталогов - все они имеют неясные имена, такие как ./workspace/e-HFILH6E7MVL5MF6FEZA6572YMZOIT565G7OEWHB73HGZLG2QQUUQ/.git
. Затем мы использовали команду git remote -v
в родительском каталоге, чтобы сообщить нам, какие пульты, которые были у git repo. find
может делать все это для нас:
find . -type d -iname "*.git" -print -exec git -C {}/.. remote -v \; 2>&1 | tee /tmp/find.log
, который производит вывод так:
./workspace/p-ONR7CFBI45A4F2W4OKRGITOA37ZR2W6JLDBTTDNH5YQHODMJJIDA/.git
origin https://github.com/bmlltech/baysinf.git (fetch)
origin https://github.com/bmlltech/baysinf.git (push)
origin1 https://github.com/bmlltech/baysinf.git (fetch)
origin1 https://github.com/bmlltech/baysinf.git (push)
./workspace/[email protected]/.git
origin https://github.com/bmlltech/market_impact.git (fetch)
origin https://github.com/bmlltech/market_impact.git (push)
origin1 https://github.com/bmlltech/market_impact.git (fetch)
origin1 https://github.com/bmlltech/market_impact.git (push)
Затем мы использовали некоторые из @ Дэйва ВИМ-фу, чтобы найти выходной файл для каждой строки, которая последовала другой строкой, содержащей tickdata
. Это дало нам список имен каталогов, таких как ./workspace/[email protected]/.git
Наконец, мы побежали git status
в каждом из родительских каталогов, все из которых вернули ОК, кроме одного. В этом мы выполнили команду, с которой Дженкинс столкнулся с проблемой, и у нас также была такая же ошибка! (отредактировано)
Исправление было тогда вручную удалить все файлы в этой «плохой» директории. Похоже, все работает сейчас.