Почему git log генерирует фатальные плохие объекты, когда дается хэш? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть сценарий оболочки, который получает и экспортирует переменную для этих вызовов: 1. dev env "build id", 2. dev env "git commit hash", 3. test env "git commit hash", 4. dev env version 5. test env version

export DEV_BUILD_ID=$(curl -k https://my-website-dev/version.txt | grep BUILD_ID=|cut -f2 -d"=")
echo 'This is DEV BUILD ID: '$DEV_BUILD_ID

export DEV_HASH=$(curl -k https://my-website-dev/version.txt | grep GIT_COMMIT=|cut -f2 -d"=")
echo 'This is DEV HASH: '$DEV_HASH 

export TST_HASH=$(curl -k https://my-website-test/version.txt | grep GIT_COMMIT=|cut -f2 -d"=")
echo 'This is TEST HASH: '$TST_HASH 

export DEV_VERSION=$(git log -1 --pretty=%h $DEV_HASH)
echo 'This is DEV VERSION: ' $DEV_VERSION

export TST_VERSION=$(git log -1 --pretty=%h $TST_HASH)
echo 'This is TEST VERSION: ' $TST_VERSION

и после всего этого я записываю ревизии сборок dev с момента последнего развертывания в тестовом env с помощью этого сценария:

echo 'Logging the output to word doc...'
git log $TST_VERSION^..$DEV_VERSION > "C:/TEMP/Test_Build_Changes_$DEV_BUILD_ID.DOC"

Проблема, с которой я сталкиваюсь, заключается в том, что скрипт неожиданно выдает эту ошибку сегодня:

$ C:/Users/ssharipo/Documents/Tuts/git_revision_practice.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    722      0 --:--:-- --:--:-- --:--:--   745
This is DEV BUILD ID: 23
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    745      0 --:--:-- --:--:-- --:--:--   745
This is DEV HASH: 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    681      0 --:--:-- --:--:-- --:--:--   768
This is TEST HASH: 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
fatal: bad object 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
This is DEV VERSION:
fatal: bad object 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
This is TEST VERSION:
Logging the output to word doc...
fatal: bad revision '^..'

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Ваш сценарий оболочки имеет фундаментальный недостаток: он вызывает некоторый веб-сайт и запрашивает у этого веб-сайта хэш-идентификатор объекта Git, записанный на веб-сайте.Затем, получив этот хэш-идентификатор, вы просите ваш Git показать вам этот объект.

Если ваш Git имеет этот объект по какой-то другой причине, ваш Git может показать вам этот объект.Но в этом случае может возникнуть вопрос, почему вы обращаетесь к какому-то веб-сайту.Если ваш Git не имеет объект, информация о хэш-идентификаторах Git на веб-сайте бесполезна, и один должен задаться вопросом, почему вы сначала обращаетесь к какому-либо веб-сайту.

Как аналогия, это все равно, что спросить Боба, что делает Джек, а затем услышать от Боба, попросить Фреда показать вам, что делает Джек.(Действительно ли эта аналогия верна, зависит от вашей ситуации, которую вы на самом деле не описали.)

Также неясно, как устранить проблему.Если веб-сайт, к которому вы обращаетесь, получает свои хэш-идентификаторы Git из какого-то другого Git-репозитория, вероятно, подход, который нужно использовать, - это чтобы ваш Git запускал git fetch для этого другого Git, получая оба хэш-идентификатора и объекты все сразу.(Используя ту же аналогию, это все равно, что идти прямо к Джеку, чтобы узнать, что он делает.)

0 голосов
/ 04 октября 2018

Когда я запускал этот скрипт, я был зачислен в ветку Мастера.Но этот сценарий должен быть запущен для ветви, для которой была выполнена сборка.Итак, я проверил ветку Dev и запустил этот скрипт, все работало нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...