2017-10-05 50 views
1

我正在使用Haskell堆棧,並且我構建的包的源代碼位於git上。我的stack.yaml看起來像這樣:從git中取出包的最新版本

packages: 
- location: 
    git: [email protected]:mhwombat/blah-blah-blah.git 
    commit: master 
. . . 

一切都很好。但是,假設源代碼在存儲庫中已更新。堆棧不會獲取最新版本;它繼續使用它已有的版本。到目前爲止,我的解決方案是刪除.stack-work並執行另一個stack build,但當然它必須重建所有內容。當你使用鏡頭時,需要很長的時間。

有沒有辦法強制堆棧從git獲取最新版本?

已經嘗試stack updatestack clean,但他們不能解決這個問題。

回答

1

有一種方法,但它是繁瑣的,而不是主提交,放置最新提交的SHA1。你可以得到最新提交運行:

git rev-parse origin/master 

輸出應該是這樣的:de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9

然後在你的stack.yaml您會將這樣的:

packages: 
- location: 
    git: [email protected]:mhwombat/blah-blah-blah.git 
    commit: de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9 
. . . 

並且,當您運行stack build時,您將有「強制」堆棧獲取最新提交no n eed刪除.stack-work了。這不像一個單一的命令那麼簡單,但它對我而言並不是太煩人,作爲獎勵對我來說,它幫助我凍結了依賴。這是可以編寫腳本的,因爲它只使用git,儘管我沒有編寫腳本而已經不夠麻煩。