2017-07-02 60 views
1

我跟着this tutorial:在一個ec2實例上設置一個git部署過程。設置一個git部署過程到ec2

我仔細地通過配置文件中的~/.ssh/主機將ssh'ing的所有步驟放入ec2機器中。創建裸git回購。添加post-receive掛鉤腳本等。

本地,我做了一些更改,提交。
然後我添加ec2回購git remote add deploy ec2:/home/ec2-user/ab-site(ab站點是我剛剛初始化的裸Git回購 - 而ec2是我在~/.ssh/config文件本地設置的ssh別名)。

然而,當我去推與git push deploy +master:refs/heads/master

我收到了一堆錯誤。

warning: core.bare and core.worktree do not make sense remote: 
warning: core.bare and core.worktree do not make sense remote: error: 
insufficient permission for adding an object to repository database 
./objects remote: fatal: failed to write object error: unpack failed: 
unpack-objects abnormal exit 

所以我很好奇我應該看看下一步解決這個問題。

+0

「不足許可用於添加一個目的是儲存庫數據庫」 - 這部分的錯誤信息告訴。我將開始檢查以確保您的ec2用戶(在本例中可能是'ubuntu')有權寫入存儲庫。 –

回答

0

core.bare and core.worktree do not make sense

這是一個警告,since Git 2.5+, is fixable。如果該警告位於遠程端,則意味着core.bare設置爲true,同時設置工作樹。

通常的處理辦法是git config --unset core.worktree但在你的情況下,from that comment

with bare=false it works OK.

然後,你可以仔細檢查權限問題。

+1

我對這一切的理解是,我正在創建一個'裸'git回購,因爲這是唯一可以推動的回購。由於我的目標是將我的網站推送到我的服務器並在推送接收鉤上運行部署腳本,這似乎是有道理的。但是現在我應該設置裸等於假?當然,我可以聽取建議,但我不明白爲什麼。 –

+0

@AlexBollbach我同意:我會取消設置工作樹,並保留裸露的本質。請注意,從Git 2.3開始,您可以推送太不公開的回購,正如我在https://stackoverflow.com/a/44406425/6309中所提到的(請參閱此處的鏈接) – VonC

0

你的問題中包含的警告和錯誤

警告
  1. 警告:core.bare和core.worktree不遠程意義: 警告:core.bare和core.worktree不遠程意義:錯誤:

解決方案

裸存儲庫是隻讀存儲庫。裸回購最常見的用例是創建一個遠程中央Git倉庫,

所以git打印出「致命的:core.bare和core.worktree沒有意義」的錯誤信息。因此,您需要在回購的配置文件中設置bare = false

cd barerepo 
git config --bool core.bare false 
git config --path core.worktree /var/www/mywork 
  • 錯誤添加一個目的是儲存庫數據庫

    沒有足夠的權限的。/對象遠程:致命:無法寫入對象錯誤:解壓縮失敗:解包對象異常退出

  • cd repository/.git 
    
    sudo chmod -R g+ws * 
    sudo chgrp -R mygroup * 
    
    git config core.sharedRepository true