使用SVN和处理相同的文件

时间:2013-09-11 18:04:04

标签: svn

我是使用SVN的新手。我们的工作是一个有3人的嵌入式项目。当有人正在开发c库时,其他人正在开发另一个库。有一个main.c,我们也在编写一些东西。我的问题是我们如何管理SVN中的main.c等常用文件?我们需要这样做,因为我们都在同一时间一起工作。

3 个答案:

答案 0 :(得分:4)

当您对文件进行更改并准备将这些更改提交回源代码管理时,您可以将它们提交给SVN服务器。当其他人也对该文件进行了更改并且他们尝试做同样的事情时,服务器会告诉他们有新版本,他们需要先更新。

更新后,SVN将合并它们的更改。如果合并不容易,则需要用户解决冲突(可能在某种合并工具中,我想这是可自定义的)。一旦解决了这些冲突,该人员就可以将更改提交到该文件。

服务器始终具有源代码的“当前版本”。当提交到服务器时,开发人员有责任确保他们已经使用当前版本测试了他们的更改并且没有破坏它。您可以使用持续集成工具和技术来自动执行大量此操作,尤其是在您对代码进行自动化测试时。为了降低合并的复杂性,建议提交许多小的更改,而不是进行少量的大更改。

答案 1 :(得分:2)

这是我们的工具已经涵盖的内容。有两件事需要注意。

  • 合并工具

这是一个自动将更改合并在一起的工具。通常,在具有两次编辑的同一文件上合并将没有任何问题,因为编辑触及了代码的不同区域。

  • 冲突

当合并工具发现两个文件都改变了相同的代码行时发生冲突(它通常也非常聪明,所以它不会因为空白线而变得麻烦)SVN会告诉你这个问题和客户端你使用甚至可能弹出合并工具显示问题。您将不得不手动解决冲突,但通过一些沟通,这很少是一个问题。

请记住在开始处理新内容之前执行更新以获取其他所有人的更改,否则您可能会遇到完全可以避免的冲突。

对于记录,我使用TortoiseSVN和WinMerge作为我的客户端和合并工具。

希望有所帮助!

答案 2 :(得分:1)

让我们从头开始:

  1. 在服务器计算机上安装subversion服务器
  2. 设置存储库
  3. 为用户设置访问权限
  4. 每个用户在其工作站上安装一个subversion客户端
  5. 将项目导入存储库(初始提交)

    svn import <project-dir> <repo-url>/trunk -m="initial commit MyProject"

  6. 现在每个用户都会签出working copy

    svn checkout --revision HEAD --depth infinity --force <repo-url>/trunk <project-dir>

  7. 现在,您和您的朋友可以开始在他的working copy上工作。完成commit对存储库的更改后。

    svn commit <project-dir | some-file> -m "some comment: fixed bug or somthing"

    要让朋友的更改执行update命令。

    svn update --revision HEAD <project-dir | some-file>

    最后,这里有一些您可能感兴趣的链接:

    svn quickstart

    svn server (linux)

    svn server and client (windows)

    svn command line client