3

当我设计时,我正在尝试新的方法来跟踪我的 Photoshop 文件的变化,我想知道;是否可以创建一个脚本,该脚本在对文件进行更改(保存)时自动创建提交。

我使用像Pixelapse这样的工具,但是有一些缺点,其中一个是恢复到以前的版本可能会很痛苦,因为你需要加载网站。

每次我在 Photoshop 中保存我的更改时,我都希望 git 创建一个提交。

自动发生这种情况我确信会产生一些不良影响,例如大量文件大小,但是我愿意接受其他建议。

更新:顺便说一句,如果有帮助的话,我正在使用 Mac OS X。

4

3 回答 3

1

您可以编写一个 shell 循环来检查自上次以来文件哈希是否更改,如果更改则提交。您可以在循环中添加睡眠,并将时间戳用作提交消息。

我个人认为这有点毫无意义,因为您应该提交有用的快照,而不是全部。

于 2012-05-29T19:41:26.570 回答
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 上),但并不是一直对我有用,并且并非在所有发行版上都可用(所以我总是使用我自制的方法)。

于 2012-12-27T17:55:44.967 回答
0

我正在寻找类似的东西,并根据try-catch-finally回答我想出了这个:

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

这样做的好处是只监视受版本控制的文件。此外,由于您大部分时间都在内部inotifywait,因此更容易杀死(如果您杀死inotitfywait它,它会“异常”退出并while退出)。

您还可以考虑其他事件,尤其是moveandmove_self并且可能createand create_self(然后您可能还想使用一些选项git ls-files)。

于 2016-01-12T11:06:11.577 回答