2012-05-29 42 views
3

我正在試驗在設計時跟蹤對我的Photoshop文件所做更改的新方法,並且我想知道;是否可以創建一個腳本,當對文件進行更改(保存)時自動創建一個提交。git可能會在文件更改時自動提交?

我使用的工具如Pixelapse但是有一些缺點,其中一個回覆到以前的版本可能會很痛苦,因爲您需要加載網站。

每次我救我我在Photoshop中的變化,我想混帳創建提交。

有了這個自動發生的,我肯定會產生像巨大的文件大小,但是我願意接受其他建議一些不良影響。

更新:順便說一句,我使用的Mac OS X,如果有幫助。

+7

Git不能自行完成,但根據操作系統的不同,您應該可以創建一個守護進程,例如,使用OSX,您可以編寫一個shell腳本來執行提交併在launchd中進行設置。 – vcsjones

+0

你應該說你是否在OS X或Windows(我假設它是前者)。 –

+0

嗨,感謝您的評論。我使用的是OS X.是否有建議創建這種性質的shell腳本的資源?謝謝。 – Mindthetic

回答

1

也許inotify-tools是一個選項。

我不知道它們是否也存在於MacOS X下。 Linux用戶將使用yum install inotify-tools(RedHat)或aptitude install inotify-tools(Debian/Ubuntu)安裝它。

然後,您可以使用inotifywait

while [ true ]; do 
    inotifywait -e modify test >/dev/null 2>&1 
    echo "Do something" 
done 

,使其背景,包裝這樣說:

{ while [ true ]; do inotifywait -e modify test >/dev/null 2>&1 ; echo "Do something" ; done }& echo $! > ~/inotitfy.something.pid 

它將不斷循環並運行inotifywait如果-e事件發生時將退出然後在本例中運行echo。通過&創建後臺進程後。後臺進程ID將被傳送到~/inotitfy.something.pid

停止它殺死的過程是這樣的:

kill -15 `echo ~/inotitfy.something.pid` 

你也可以把第一的變體進入screen

請注意,也可能有一個inotifyexec(就像在Debian Squeeze上一樣),但並不是所有時間都適用於我,並且在所有發行版上都不可用(所以我總是使用我自制的方法)。

+0

@Sevenupcan請注意,在自動提交某些內容時,您無法通過提交消息來描述更改。 此外,提交Photoshop文件(每次保存)可能會導致極大的磁盤空間消耗。 如果我沒有記錯的話,那裏有一個Photoshop插件可以跟蹤您所做的所有更改,併爲您提供一些時間線。也許這工作更有效。我沒有很快找到它 - 你可能會嘗試搜索它。 –

+0

感謝您的回覆。我認爲MacOS上也有類似的工具,希望我能找到類似的東西。您正在考慮的工具稱爲PixelNovel的時間軸。它確實按照您的描述進行了操作,但我期待創建一項定製服務。謝謝你的幫助。 – Mindthetic

1

你可以寫一個shell循環,以檢查是否因爲上次的文件哈希值改變,並承諾,如果它沒有。您可以在循環中添加睡眠,並使用時間戳作爲提交消息。

個人而言,我會說這是一個毫無意義的一點,因爲你應該提交有用的快照,不是所有的人。

+0

我明白你來自哪裏。對我來說,在Photoshop中保存的行爲與我使用的任何其他應用程序是不同的心態,所以即使是最小的變化對我而言也是非常重要的。我計劃有一個設置里程碑來突出特定版本的方法。 – Mindthetic

0

我一直在尋找類似的東西,並根據try-catch-finallyanswer我想出了這一點:

while git ls-files | inotifywait -q -e modify --fromfile -; do 
    …something… (in your case probably git-commit) 
done 

這樣做,只有版本控制下的文件都觀看了優勢。此外,由於你大部分時間都在inotifywait之內,因此更容易殺人(如果你殺了inotitfywait它會「異常退出」並退出while)。

你也可以想想其他事件,尤其是movemove_self並可能createcreate_self(那麼你可能想使用某些選項上git ls-files以及)。