Svn或Git客户端(或插件)查找丢失或损坏的文件



在使用Svn(或其他版本控制系统)时,经常会出现程序员提交一些更改并破坏构建的问题。例如,因为:

  • 创建了一些文件,但未在版本控制下添加
  • 在一个文件夹中进行了更改,但程序员认为这是另一个文件夹并提交了它
  • 少数子文件夹中的文件已更改,但只提交了一个文件夹
  • 程序员更改了一些代码,但没有编译("因为更改太容易了!")
  • 等等

损坏的构建是一件坏事-浪费时间,其他人的工作中断,最好避免它。所以我正在寻找一些svn(git?)客户端\tool\plugin,它有钩子"提交前",在那里它可以检查一些基本的东西,比如:

  • 如果文件夹包含不在版本控制-显示警告
  • 如果文件夹包含项目文件(来自VS或其他IDE),并且此项目文件包含对不受版本控制的文件的某些引用,则显示警告
  • 如果文件夹包含项目文件和某种类型的文件(让我们再次说"cpp")工具应该(可选)尝试使用项目文件中的设置来构建此文件,并在文件未编译时显示警告

我试图找到这样的工具,但没有成功。现在我有了自己创建这样的工具的想法(使用基于插件的架构,可以轻松添加对新项目类型、文件类型和版本控制类型的支持)。但在开始使用这个工具之前,我想问一下——也许我错过了什么,而这样的工具已经存在了?

感谢

使用http://en.wikipedia.org/wiki/Continuous_integration服务器,例如Jenkins。因为它不是版本控制系统的作业。

有时构建至少需要几分钟甚至几个小时(+测试)。强迫开发人员如此缓慢地进行提交是非常糟糕的做法。

此外,在保持工作副本整洁的同时,不添加/不删除文件应该根本不是问题。如果您设置了所有.gitignore,提供了--assume-unchaged,那么git status在提交后将不显示任何内容。所以,只要教会开发人员注意工作副本的卫生,这会有很大帮助。

您可以使用Subversion和Git设置预提交挂钩。这些钩子基本上只是shell脚本,您可以用它们做非常简单或非常复杂的事情。

  • Git挂钩
  • Subversion挂钩

几个例子:

  • 一个简单的Git预提交挂钩,用于查找未提交的.cpp文件:

    untracked_cpp_files=$(git ls-files --exclude-standard -o *.cpp)
    if [ -n "${untracked_cpp_files}" ]; then
      echo "Unable to commit: untracked .cpp files found in repository."
      exit 1
    fi
    
  • 这里有一个Github项目,它提供了一个Git预提交挂钩来检查各种语言的语法:https://github.com/shadow7412/hooks.

  • 还有一些有用的Subversion挂钩列表:http://blog.grimsy.net/2008/07/a-few-svn-pre-commit-hooks/

Git有这样一个系统:

man githooks

享受吧!

最新更新