2009-04-17 24 views
8

我想配置我的电脑,以便每隔半小时自动提交我正在处理的程序。我使用svn仓库,即使它只是一个脚本,每30分钟运行'svn ci'就没问题。问题是我不知道该怎么做。如何让Subversion(或任何程序)执行定期提交?

可能有人请告诉我,或直接我的东西,它可以让我得到这个定期提交的东西的工作?

在此先感谢。

编辑:对不起,似乎我困惑的人,为什么我想这样做。我想这样做的唯一原因是因为我的讲师希望我们知道我们的代码随着时间的推移如何发展,我认为使用svn来达到这个目的将是一个好主意。最新的提交是否有效并不重要。它只需要显示我对代码所做的更改。

+0

你想在你的代码自动检查每30分钟?你为什么要这样? – 2009-04-17 03:43:24

+0

给出的解释。 – 2009-04-17 03:52:16

+0

您的常规提交还将显示代码开发时间表,并且还会包含有用的注释。如果你只是想改变所有东西的快照,只需使用Eclipse的本地历史记录或Mac上的Time Machine。 – Thilo 2009-04-17 04:01:47

回答

5

我不会玷污你的控制版本系统与这种系列的自动提交。但我同意使用控制版本系统来提供这些信息的想法。

然后,我的建议是:使用您的软件存储库和另一个存储自动提交。工作完成后,只需在一个逻辑提交中合并主存储库中的所有自动提交。

使用Git,我这样做:

  1. 回购 '富':主存储库
    1. 裁判/头/ ...:你的开发分支位置
    2. 裁判/会话/ ...:你的工作与脏提交的位置。
  2. 的工作副本:
    1. “混帐初始化”
    2. “混帐远程加富的git://富/ ...;混帐取富”
  3. 创建分支:“git checkout -b bar foo/master”
  4. 标记分支开始:“git tag barbegin”
  5. 激活脚本:“while true; do git add -A。; git commit -m'autocomm它';做”
  6. 我不会用一个cron作业,这样你就可以激活/轻松停用autocommits。
  7. 做你的工作
  8. 完成工作后,禁用脚本
  9. 提交等待改变
  10. 现在,你有很多的汽车在分支条提交,你所标记的初始提交的分支,通过barbegin
  11. 发布汽车承诺:
    1. “混帐标签副把”
    2. “混帐推富barbegin:裁判/会话/用户ID /会话ID /开始”
    3. “混帐推富副把:裁判/会话/用户ID /会话ID /结束”
  12. 现在,您已经发布的工作和你的讲师可以访问它
  13. 用于更新您的富库:
    1. “混帐变基-i --onto barbegin barbegin”和描述here
    2. 我会继续压扁所有通信它的:“最终只能有一个”。
    3. “混帐推FOO吧:大师” #只有一次提交会被推
  14. 清洗:
    1. “混帐标签-d barbegin”
    2. “混帐标签-d副把”
    3. “混帐分支-d栏”

这一切后,我觉得没有有用的我信息可以用这种数据收集。所以,我会尽量避免这个工作流程。但如果真的需要,我会这样做。

1

如果您在UNIX的味道运行考虑创建一个cron作业在定期运行的命令。

6

您可以尝试运行shell脚本的cron作业。你在什么操作系统上?

但我很好奇你为什么要这样做。您的提交应该包含多个功能或错误修复,而不是基于时间间隔。您可能会在更改中(在一组文件上)执行这些操作,这会使您的修订无效。

5

我不认为按时间表设置提交是一个特别好的主意。特别是如果你开始进入测试和持续集成。以设定的时间间隔进行提交将会破坏构建,因为不能保证您将在时间范围内完成变更集。

一种更好的方式,如果你想自动提交是使提交构建过程本身的一部分。只要将构建过程的最后一步提交到存储库即可。这样,如果构建失败,你将不会犯垃圾。

完全可以用make的所有味道,我知道的Visual Studio已前置和后置构建可设置做一些这样的活动。所以我很确定大多数现代IDE可以处理这个问题。

至于尤其在该问题特别考虑:
移动commit钩子的过程的开始,所以你可以跟踪你陷入困境的时候了庄严,以及你如何来修复错误。

12

相反,明显的民意,我觉得这是一个伟大的使用SVN的,在转让的情况下。

像kdesvn(或甚至更好,tortoisesvn,但只有在Windows上)的工具可能会让您很好地了解它们的日志视图,差异和责怪视觉效果。

如果您使用Ubuntu的,从一个控制台是独立于你的工作的一个运行此bash脚本。

#!/bin/bash 
while [ 1 ] 
do 
     # Do the commit 
     svn ci --message "Automated commit" ~/yourworkingcopy 

     # Wait until next commit time 
     sleep 1800 
done 
2

我会使用Subversion,但我反而刚刚进入工作单上的变化,并comitting那些到存储库的习惯。

这样的讲师,如果他想,可以看看不仅什么改变,但为什么它改变。这将会更有用,我会想象。