我正在尝试在设计时跟踪我的Photoshop文件更改的新方法,我想知道;是否可以创建一个脚本,在对文件进行更改(保存)时自动创建提交。
我使用像Pixelapse这样的工具,但是有一些缺点,其中一个回复到以前的版本可能会很麻烦,因为你需要加载网站。
每次我在Photoshop中保存我的更改时,我都希望git能够创建一个提交。
自动发生这种情况后,我肯定会产生一些不良影响,例如大量文件大小,但我会接受其他建议。
更新:顺便说一下,如果有帮助的话我会使用Mac OS X.
答案 0 :(得分:1)
您可以编写一个shell循环来检查自上次以来文件哈希是否已更改,如果是,则进行提交。您可以在循环中添加睡眠,并使用时间戳作为提交消息。
我个人认为这有点无意义,因为你应该提交有用的快照,而不是全部快照。
答案 1 :(得分: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上一样),但是并不是所有时间都适用于我,并且不适用于所有发行版(所以我总是使用我自己的方法)。
答案 2 :(得分:0)
我正在寻找类似的东西,基于try-catch-finally的answer我提出了这个:
while git ls-files | inotifywait -q -e modify --fromfile -; do
…something… (in your case probably git-commit)
done
这样做的好处是只能监视版本控制下的文件。此外,因为你大部分时间都在inotifywait
内,所以杀死它会更容易(如果你杀死了inotitfywait
它会“异常地”退出并且while
退出了。
您还可以考虑其他事件,尤其是move
和move_self
以及可能create
和create_self
(那么您可能希望在{{1}上使用某些选项也是)。