我想配置我的计算机,以便说每半小时它会自动提交我正在处理的程序.我正在使用一个svn存储库,所以即使它只是一个每隔30分钟运行'svn ci'的脚本就可以了.问题是我不知道该怎么做.
有人可以告诉我,或者告诉我什么,这会让我得到这个定期提交的东西吗?
提前致谢.
编辑:对不起,似乎我让人们感到困惑,为什么我会这样做.我想这样做的唯一原因是因为我的讲师希望我们知道我们的代码如何随着时间的推移而发展,我认为使用svn是一个好主意.最新提交是否有效无关紧要.它只需要显示我随着时间的推移对代码所做的更改.
与明显的流行观点相反,我认为在赋值的背景下,这是对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
您可以尝试运行shell脚本的cron作业.你在用什么操作系统?
但我很好奇你为什么要这样做.您的提交应包含一些功能或错误修复,而不是基于时间间隔.您可能会在更改中(在一组文件上)提交,这将使您的修订无效.
我不认为按时间安排设置提交是一个特别好的主意.特别是如果你开始进入测试和持续集成.按设定的时间间隔提交将破坏构建,因为无法保证您将在时间范围内完成变更集.
更好的方法是,如果要自动提交,则自己进行构建过程的提交.只需将构建过程的最后一步提交到存储库即可.这样,如果构建失败,您将不会提交垃圾.
完全可以使用各种make,我知道Visual Studio有前后构建事件,可以设置为这样做.所以我很确定大多数现代IDE都可以解决这个问题.
特别要考虑这个问题:
将提交挂钩移动到流程的开头,这样您就可以跟踪何时陷入困境以及如何修复错误.
我不会用这样一系列的自动提交弄脏你的控制版本系统.但我同意使用控制版本系统来提供该信息的想法.
然后,我的建议是:为您的软件使用一个存储库,另一个用于存储自动提交.完成工作后,仅在一个逻辑提交中合并主存储库中的所有自动提交.
用git,我会这样做:
Repo'foo':主存储库
refs/heads/...:您的开发分支的位置
refs/sessions/...:使用脏提交工作的位置.
你的工作副本:
"git init"
"git remote add foo git:// foo/...; git fetch foo"
创建分支:"git checkout -b bar foo/master"
标记分支的开头:"git tag barbegin"
激活脚本:"while true; do git add -A .; git commit -m'autocommit'; done"
我不会使用cron作业,因此您可以轻松激活/停用自动提交.
做你的工作
完成工作后,停用脚本
提交挂起的更改
现在,您在分支栏中有很多自动提交,并且您已使用barbegin标记了分支的初始提交
发布您的自动提交:
"git tag barend"
"git push foo barbegin:refs/sessions/your user id/session id/begin"
"git push foo barend:refs/sessions/your user id/session id/end"
现在,您已经发布了您的工作,您的讲师可以访问它
用于更新您的foo存储库:
"git rebase -i --onto barbegin barbegin"并按此处所述进行操作
我会压扁所有提交:"最后,只能有一个".
"git push foo bar:master"#只会推送一个提交
清洁:
"git tag -d barbegin"
"git tag -d barend"
"git branch -d bar"
毕竟,我认为不会收集这类数据的有用信息.所以,我会尽量避免这个工作流程.但如果真的需要,我会这样做.