【问题标题】:How to setup a Cron job to do a Git commit如何设置 Cron 作业来执行 Git 提交
【发布时间】:2011-04-17 17:00:55
【问题描述】:

我每天都在手动提交我的 git 存储库。但有时我会忘记。

是否可以编写一个 shell 脚本来执行 git commit ?

我觉得很难,因为我不知道如何通过脚本提供提交消息。

注意

感谢所有向我指出这不是版本控制系统应该使用的方式的开发人员。我同意。如果我每天提交,许多版本将保持损坏状态。

我的情况不同。我对维护不会破坏的版本并不感兴趣。我对保留我的代码的备份更感兴趣。我通过 winSCP 在远程机器上以一种奇怪的方式工作。 我想要一些可以保存我所做的每一个小改动的东西,这样万一我在某个目录中执行“rm -rf”,我就不会丢失我的大部分工作。

【问题讨论】:

  • 最好根据完成的工作单元进行提交,而不是按天提交。脚本在一天结束时自动提交的想法让我有点害怕。
  • 一个可能的替代方案:每隔几个小时查看一次 git repo 的 cron 作业,如果您有超过 X 行的更改,并且您在过去 Y 小时内没有提交,它以某种方式提醒你,“我注意到你有一段时间没有做任何事情了,也许你应该......”

标签: git shell


【解决方案1】:

这似乎不是一个好主意,但是,如果你仍然想这样做,这样的事情就足够了:

COMMIT = cat ~/commit_message
git commit -m $COMMIT

而且,您可以每天将~/commit_message 更改为您喜欢的任何内容。

【讨论】:

  • 然后你的问题就变成了每天忘记设置commit_message。我同意 Uku Loskit 的观点,即这违背了版本控制系统的目的
  • 是的,我也鼓励您不要这样做。如果您可以向我们提供有关您的目标的更多信息,我们可以为您提供帮助。 cronjobs 真的不适合任何地方。
  • 您的答案在语法上不是有效的 sh。你的意思是 COMMIT=$(cat ~/commit_message) 吗?如果是这样,为什么不直接使用 git commit -F ~/commit_message。既然我在评论,我应该插话并同意自动提交 git 是一个可怕的,可怕的想法。
  • 我同意 William Pursell 的观点。
【解决方案2】:

根据您的具体用例,您可能需要查看Flashbake,它使用 git 来非常频繁地提交项目 - 这个想法是为了帮助作者在非常精细的水平上跟踪他们的写作进度.这不是 git 被设计用来使用的方式,但这是一个不错的主意 :)

【讨论】:

  • 是的,我需要这样的东西。谢谢1
【解决方案3】:

它与普通的 cronjob 应该没有太大区别。您可以通过-m(消息)选项设置提交消息。

话虽这么说,但您想像这样定期提交似乎很奇怪。如果您总是提交相同的消息和不可分割的工作量,那么这与版本控制的整个理念背道而驰。

【讨论】:

  • 我同意这不是版本控制系统应该使用的方式,但这种情况非常具体。
  • 一种方案是在版本控制中备份配置文件。在这种情况下,您每天或您选择的任何时间间隔都继续提交。
  • @manojlds:我只在更改配置文件时才提交它们。但也许你有一些自动更改的配置文件。
【解决方案4】:

我认为拥有某种版本控制作为备份的想法并不可怕。

这只是 Git 的另一种用途,而不是它的具体用途。

为什么要使用不熟悉的工具来完成繁重的工作?也许有更好的实践方法,但可以说使用 Git 可以与任何其他“备份”机制相媲美,它只是通过另一种方法来实现。只要你理解这一点并理解它对 repo 的影响,就去做吧。

编辑

我没有在回复中提供答案...抱歉。

我肯定会说一个好的方法是让它每天运行两次检查更改数量,如果数量超过某个阈值,请继续运行提交。将提交消息设置为描述备份的内容。例如,您可以通过编程方式将提交消息设置为包含日期/时间以及提交更改的文件的某些相似之处,而不是直接使用 bash。这样一来,您的提交消息就不一样了,而且它们实际上很有用。

用 Python 或 Ruby 做起来相当简单,它们都有库来运行命令行级别的东西(比如 Git commit -am + 消息,或类似的东西)

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多