首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使git自动提交

使git自动提交
EN

Stack Overflow用户
提问于 2009-01-07 20:34:18
回答 14查看 93.7K关注 0票数 161

我想使用git来记录文件中的所有更改。

有没有一种方法可以让git ' commit‘在每次文件更新时自动发生--这样对文件的每一次更改都会有新的提交?

理想情况下,我希望我的用户甚至不知道git在幕后运行。然后,用户可以潜在地“撤消”对文件的更改-这可以通过从git中删除以前的版本来实现。

EN

回答 14

Stack Overflow用户

发布于 2010-05-07 19:38:40

git-wip是一个很棒的解决方案,对我来说效果很好。"WIP“代表”进行中的工作“。每次运行'git wip‘时,更改都会提交到单独的分支。它可以在命令行上运行,但是vim和emacs有一些扩展,可以在每次写入文件时自动运行git-wip。

票数 17
EN

Stack Overflow用户

发布于 2012-12-22 19:42:45

我想在windows中这样做,发现最好的方法是使用Directory Monitor检查更改,然后当它检测到更改时运行它:

程序: cmd.exe

参数: /C C:\pathToBatchFile.bat

该批处理文件包含:

代码语言:javascript
复制
c:
cd c:\gitRepoDirectory\
(if exist "%PROGRAMFILES(X86)%" (
"%PROGRAMFILES(X86)%\git\bin\sh.exe" --login -i -c "git commit -am AutoCommitMessage"
) else (
"%PROGRAMFILES%\git\bin\sh.exe" --login -i -c "git commit -am AutoCommitMessage"
))

我还尝试在其中使用另一个命令来添加文件("%PROGRAMFILES(X86)%\git\bin\sh.exe" --login -i -c "git add *.*"),但我认为我无法正常工作。

我还创建了一个提交后钩子,其中包含:

代码语言:javascript
复制
#!/bin/sh
git.exe pull -v --progress  "origin"
git.exe push    --progress  "origin" master:master
curl.exe -s https://webserverdomain.com/updateFromGitHook.x?r=repoName

(如果有任何冲突,那么它将中止拉取和中止推送,但没有任何明确的方法来说明已经发生了-最终我们放弃了整个想法,因为这个缺陷。)

curl命令告诉我的服务器,它需要拉出代码。在php中处理它所需要的就是:

代码语言:javascript
复制
<?
$r = $_GET['r'];
if (!empty($c)) {
    //use system instead of exec if you want the output to go back to the git client
    exec("cd /path/to/repo/parent/$r; sudo git reset --hard HEAD; sudo git pull;");
    echo "\n\nServer: Updated\n\n";
} else {
    echo "\n\nServer: UPDATE FAILED\n\n";
}
?>

唯一的问题是它需要由根用户而不是apache用户运行,所以我还必须在/etc/sudoers.d/中创建一个包含以下内容的文件:

代码语言:javascript
复制
www-data ALL = NOPASSWD: /usr/bin/git

对我来说,我认为这是相当可靠的。目录监视器可以配置为在启动时运行,并最小化启动,它可以监视几个不同的文件夹

票数 14
EN

Stack Overflow用户

发布于 2012-10-17 01:39:27

Inotify听起来确实是适合这项工作的工具。

有一个名为incron的工具,它可能就是你要找的。您可以在类似crontab的内容中指定文件或文件夹(以及事件类型,如"change“、"create”、"unlink"),以及在发生此类事件时运行的命令。

与inotifywait (类似于穷人的cron sleep 10;do stuff)相反,它将捕获所有事件,而不仅仅是第一个事件。

我自己还没有用过它,但从文档中看,它看起来并不太复杂,很难设置。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/420143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档