成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在腳本中調(diào)用git命令:指定git命令運行上下文

Vultr / 3079人閱讀

摘要:倉庫掛在上,而提供功能,可以在指定事件根據(jù)自動部署這一用途,這里指的當(dāng)然主要是事件了發(fā)生后,發(fā)一個請求到指定來觸發(fā)更新。

背景

今天琢磨著利用git來做服務(wù)器自動部署。git倉庫掛在coding.net上,而coding.net提供webhook功能,可以在指定git事件(根據(jù)“自動部署”這一用途,這里指的當(dāng)然主要是push事件了)發(fā)生后,發(fā)一個請求到指定URL來觸發(fā)更新。

問題

由于我本人用的是php,所以自然是php接收到coding.net的請求后,執(zhí)行一段shell命令來啟動git拉取代碼。這一部分還是比較順利的,問題是,啟動git拉取代碼的shell命令要怎么寫呢?

想想我們平時是怎么做的呢?

$ cd /xxxx/xxx #進到git項目目錄
$ git pull #拉取代碼

嗯,看起來很簡單,那我們shell命令也這么寫吧。

fatal: Not a git repository (or any of the parent directories): .git

哎?!這是什么情況,我路徑都是對的啊,怎么會找不到.git目錄?

解決方案

在stackoverflow一番搜尋后,尋得問題原因:git命令依賴于環(huán)境變量GIT_DIRGIT_WORK_TREE,這兩個環(huán)境變量才是git真正的運行上下文。而在shell命令里直接執(zhí)行cd是不會跟著改變這兩個環(huán)境變量的,因此,就可能發(fā)生上述的錯誤。

知道原因就好辦了,我們也不需要使用cd命令了,直接用--git-dir--work-tree來傳入這兩個參數(shù)即可:

$ git --git-dir="/xxx/xxx/.git" --work-tree="/xxx/xxx" pull # 注意這兩個參數(shù)是傳給git命令的,要放在"git"的后面
未完待續(xù)

我不解的是,為什么在控制臺里直接cd就可以改變GIT_DIRGIT_WORK_TREE這兩個變量呢?求大神指教。

參考資料

getting “fatal: not a git repository: "."” when using post-update hook to execute "git pull" on another repo

git --git-dir not working as expected

git(1) Manual Page

Git系列之二 --- git-dir & work-tree

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22483.html

相關(guān)文章

  • Electron入門介紹

    摘要:本文主要講解的入門??梢詭椭覀児芾戆南螺d依賴部署發(fā)布等??梢哉J(rèn)為是中的。后續(xù)使用中,全部替換為即可。命令根據(jù)它,自動下載所需模塊用于創(chuàng)建窗口和處理系統(tǒng)事件安裝包的位置。 Electron是什么 可以認(rèn)為Electron是一種運行環(huán)境庫,我們可以基于此,用HTML、JS和CSS寫桌面應(yīng)用。PC端的UI交互,主要有web應(yīng)用和桌面應(yīng)用。具體采用哪種方式,主要看系統(tǒng)的應(yīng)用場景,哪個更合適...

    wing324 評論0 收藏0
  • 2018 年了,你還是只會 npm install 嗎

    摘要:無需手動拷貝文件或者創(chuàng)建軟鏈接到目錄,有更優(yōu)雅的解決方案。這是因為識別協(xié)議的,得知這個包需要直接從文件系統(tǒng)中獲取,會自動創(chuàng)建軟鏈接到中,完成安裝過程。 nodejs 社區(qū)乃至 Web 前端工程化領(lǐng)域發(fā)展到今天,作為 node 自帶的包管理工具的 npm 已經(jīng)成為每個前端開發(fā)者必備的工具。但是現(xiàn)實狀況是,我們很多人對這個nodejs基礎(chǔ)設(shè)施的使用和了解還停留在: 會用 npm insta...

    libxd 評論0 收藏0
  • Ubuntu 17.04 x64 安裝 Docker CE 初窺 Dockerfile 部署 Ngi

    摘要:容器運行時,會打印一條信息消息并退出。因此,更好地做法是將需要使用的用戶加入用戶組。涉及到了兩條指令,和。執(zhí)行命令指令是用來執(zhí)行命令行命令的。 Docker 是個劃時代的開源項目,它徹底釋放了計算虛擬化的威力,極大提高了應(yīng)用的運行效率,降低了云計算資源供應(yīng)的成本!使用 Docker,可以讓應(yīng)用的部署、測試和分發(fā)都變得前所未有的高效和輕松! 無論是應(yīng)用開發(fā)者、運維人員、還是其他信息技術(shù)從...

    fyber 評論0 收藏0
  • Ubuntu 17.04 x64 安裝 Docker CE 初窺 Dockerfile 部署 Ngi

    摘要:容器運行時,會打印一條信息消息并退出。因此,更好地做法是將需要使用的用戶加入用戶組。涉及到了兩條指令,和。執(zhí)行命令指令是用來執(zhí)行命令行命令的。 Docker 是個劃時代的開源項目,它徹底釋放了計算虛擬化的威力,極大提高了應(yīng)用的運行效率,降低了云計算資源供應(yīng)的成本!使用 Docker,可以讓應(yīng)用的部署、測試和分發(fā)都變得前所未有的高效和輕松! 無論是應(yīng)用開發(fā)者、運維人員、還是其他信息技術(shù)從...

    seanHai 評論0 收藏0

發(fā)表評論

0條評論

Vultr

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<