2015-04-30 5 views
0

Во время сборки Travis CI мне нужно протолкнуть мой код в потенциально пустой готический репозиторий git, запущенный на машине, где код будет развернут позже.Сбросить пустой пустой репозиторий git

На хост-машине, я инициализируется голую репозиторий:

$ git init --bare 
Initialized empty Git repository in /home/user/stuff.git/ 

ключей SSH и т.д. устанавливаются и SSH работает.

На клиентской машине (Travis CI в этом случае), я делаю это и получаю сообщение об ошибке. Я уже пробовал очистить удаленное репо и снова инициализировал его. Кто-нибудь есть идея решить это?

$ git remote add $HOST [email protected]$FQDN:stuff.git 
$ git push -f $HOST $BRANCH (I have also tried without force-push) 
Counting objects: 375, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (188/188), done. 
Writing objects: 100% (375/375), 3.18 MiB | 0 bytes/s, done. 
Total 375 (delta 171), reused 375 (delta 171) 
error: Could not read 6e841a138c7b1e36db81bbbf7815336369766b81 
fatal: Failed to traverse parents of commit a27fd5c2101fc69107f51c0ad895108edec3ac46 
error: Could not read 6e841a138c7b1e36db81bbbf7815336369766b81 
fatal: Failed to traverse parents of commit a27fd5c2101fc69107f51c0ad895108edec3ac46 
To [email protected]:stuff.git 
! [remote rejected] master -> master (missing necessary objects) 
error: failed to push some refs to '[email protected]:stuff.git' 

Edit2:

переменной среды ссылка:

$HOST=myserver 
$FQDN=$HOST.mycompany.com 
$BRANCH=master 

Edit1:

Fsck на клиенте репо (Travis ДИ)

$ git fsck 
Checking object directories: 100% (256/256), done. 
Checking objects: 100% (453/453), done. 

Fsck на удаленный репозиторий (до толчка , Непосредственно после того, как git init --bare)

$ git fsck 
notice: HEAD points to an unborn branch (master) 
Checking object directories: 100% (256/256), done. 
notice: No default references 

FSCK на удаленный репозиторий (после толчка)

$ git fsck 
notice: HEAD points to an unborn branch (master) 
Checking object directories: 100% (256/256), done. 
Checking objects: 100% (453/453), done. 
notice: No default references 
dangling commit 95d0bbce235f8317f849a0766cca6604ac334c21 
+0

Можете ли вы попробовать запустить 'git fsck' в репозитории, чтобы убедиться, что все нормально и работает до того, как вы нажмете? Я не думаю, что это связано с вашим пультом, но проблема с вашим местным репозиторием. –

+0

Привет @NoufalIbrahim! Я добавил выходы git fsck – mitchkman

+0

Каковы значения $ HOST и $ BRANCH, для которых вы нажимаете? –

ответ

1

Я нашел решение.

Travis CI, похоже, делает неглубокий клон на сборке. По крайней мере, Codeship делает это, чтобы увеличить операции клона Git: https://codeship.com/documentation/faq/push-to-remote-repositories/

Так что перед нажатием на голый репо, я

git fetch --unshallow || true 
git fetch origin "+refs/heads/*:refs/remotes/origin/*" 
... 
git push -f $HOST $BRANCH 

Теперь git push проходит гладко. Поправьте меня если я ошибаюсь.

+0

Это кажется мне разумным. Необходимые объекты для создания и создания полного клона были недоступны. Вот почему толчок не удался. Я думал, это потому, что ваш репозиторий был поврежден, поэтому я предложил «fsck», но, по-видимому, это был не полный клон. –

+0

Я положил первые две строки из OP в свой 'before_script' в свой файл' .travis.yml', и он решил мою проблему. –

Смежные вопросы