2010-07-02 60 views
7

我正在開發嵌入式Linux項目。我們的構建過程使得圖像閃現到設備中。我們的許多文件需要root權限才能使系統正常工作。當我嘗試拉動並修改其中一些文件時,我遇到了一個問題 - git無法寫入這些文件,因此很難重置並執行sudo pull。然後,當我切換分支時,它說所有這些文件都「無法取消鏈接...」,但無論如何它都會切換分支,然後當我嘗試切換回分支時,它不會讓我,因爲我進行了本地更改。你如何處理git中的文件所有權?

所以我沒有做正確的事情;處理這個問題的正確方法是什麼?

+3

所以,我很好奇 - 爲什麼你需要文件的所有權?沒有它會破壞什麼? – Amadan 2010-07-02 16:18:51

回答

7

我會構建你的系統,以便源文件不關心他們是什麼所有者。你可以檢查這些進出git,而不用擔心他們擁有什麼權限或者擁有者是誰(尤其是因爲git部署可能會在所有系統中「擁有者」沒有意義)。

當您想要生成嵌入式圖像時,將所有內容複製到新目錄中,然後然後根據需要設置權限。

+1

這實際上很容易實現。我做了一個查找-user root> rootlist.txt,並製作了一個腳本,將rootlist.txt中的文件傳遞給root,然後調用構建腳本,然後將文件傳回給當前用戶。 – 2010-07-02 20:17:48

+0

如果文件名有換行符,我以前評論中的解決方案將失敗;最好使查找輸出爲空分隔的文件名。由於這個問題,我轉而使用Buildroot來代替,這比我從零開始的設置好得多。 – 2012-07-14 14:53:57

3

最簡單的方法(如果可能的話)是不做任何操作(克隆等)作爲根,因爲這會導致其他用戶無法使用這些文件。

另一種方法是使用git init --shared爲存儲庫設置共享(組或全部)權限,然後是git remote add origin http://host/repo.gitgit pull origin master。這基本上是一個權限不太嚴格的克隆。

1

我不確定我明白爲什麼有些文件必須是chowne'd root。直覺上我猜你的問題是對所有者的依賴,而不是Git不存儲所有權。你在可以做的是chown在你身上。

5

建立在Karmastan的答案上,這裏的魔術字是「構建腳本」。

git中的文件不必看起來像部署版本。你不要部署.c文件 - 你先編譯它們。同樣,在部署/安裝之前,一些配置文件也可以通過構建過程。

相關問題