2014-10-03 98 views
1

當我嘗試苗條我的回購使用命令:Git的改寫歷史使用過濾分支「權限被拒絕」

git filter-branch --force --tree-filter 'rm -rf `/Volumes/RamDisk/FF/large_files.txt | cut -d " " -f 2` ' --prune-empty master 

我得到的輸出在我的控制檯:

Rewrite 072caf825338a50130903528862caa12cebd1c87 (1/3214)/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-filter-branch: line 318: /Volumes/RamDisk/FF/large_files.txt: Permission denied 
Rewrite 2e7c35b1dd73b2b2ceb010a3cd98ad6906b0716e (2/3214)/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-filter-branch: line 318: /Volumes/RamDisk/FF/large_files.txt: Permission denied... 

large_files.txt是隻是與文件列表中的文本文件刪除,我擁有它,並擁有所有權限:

-rwxrwxrwx 1 luka staff 6983 3 Oct 23:00 large_files.txt 

我確信.git-rewrite不在回購(刪除)和強制標誌沒有幫助?

這究竟是什麼權限呢? 文件系統權限,Git遠程權限或其他? 這是我的回購,我有充分的權限,試用sudo,沒有任何幫助。 BTW:large_files.txt只是文本文件的清單文件刪除,

你能幫我udnerstand我在這裏錯過什麼?

+0

我不知道strace的等價物,就像它應該告訴你到底出了什麼問題。 – jthill 2014-10-03 23:00:06

回答

1

您正在嘗試執行large_files.txt(請注意中的字符在--tree-filter的參數中有什麼內容)。當您試圖執行不可執行的文件(即使樂觀地將其權限設置爲a+x)時,shell可能會令人困惑地說「權限被拒絕」。你可能打算在那裏有一個cat,不是嗎?

順便說一句,使用xargs可能比只將參數擴展到rm更安全。例如:

cut -d " " -f 2 /Volumes/RamDisk/FF/large_files.txt | xargs rm -rf