我有一個用於git的Atlassian Stash服務器。Git遠程服務器上的預推對象? git ls-tree
我正在尋找一個腳本,它將運行java代碼格式化程序作爲預接收鉤子(在將更改推送到存儲庫之前)。
所以,我所希望做的是不做藏匿服務器本身的工作,而另一臺服務器上執行的工作,併發送回狀態(0或1)藏匿服務器。
我已經用Python寫了腳本,它在遠程服務器上用「GET oldrev newrev」作爲HTTP GET方法調用cgi(python)腳本。一旦我在遠程服務器上獲得了STDIN值(ref oldrev newrev),我創建了一個dir,git init,git remote add origin URL和git fetch(我甚至嘗試了git pull)來獲取reporsitory的最新內容/對象希望得到未被推送到存儲庫但是在預推送階段環境中的對象。
散列或SHA鍵或者說是在預推階段目標的「NEWREV」鍵:36ac63fe7b15049c132c310e1ee153e044b236b7
現在,當我運行「git的LS-樹36ac63fe7b15049c132c310e1ee153e044b236b7 Test.java」目錄內我上面創建,它給了我錯誤。
「致命的:不是樹對象
現在,我的問題是:
如何獲得一個遠程服務器上的對象?
什麼可能是我運行的git命令會在那個階段給我那個對象?
有沒有其他方式做到這一點?
它是否有任何意義我上面問過。如果我不清楚,請告訴我,我會盡力清理更多。
非常感謝任何/所有的幫助?
感謝您的回覆jthill。但我正在尋找一個「不正常」的解決方案來解決這個問題,因爲我面臨的問題也不是很正常。 我也知道要做的代碼格式和驗證入站文件,並拒絕推送,我已經有了運行。但是,我期望在遠程服務器上執行此操作,而在Stash服務器上執行** NOT **操作。 你或任何人都知道如何創建臨時文件並將其指向另一個SHA和不同的目錄。 –
@MurtazaPitalwala請描述問題?你想在這裏離開什麼?減少服務器上的CPU負載,是什麼? – jthill
問題是,我必須找出在將提交推送到主分支之前執行java格式檢查和其他檢查的方法**在遠程服務器**上,不在存儲服務器上。我傾向於,因爲裁判沒有被推動/承諾,所以現在還不可能。 一種方法我想到: 1.使用/ git的貓*藏匿服務器上的物理文件系統 2.然後將文件(S)上傳到遠程服務器 3.一旦文件上.java文件上傳在遠程服務器上執行工作 4.將響應(0或1)發送回存儲服務器。 –