首页 > 代码库 > 初识版本控制(version control)
初识版本控制(version control)
最近写论文心烦,考虑到自己做的港口设备远程监控系统项目,两人分工共同完成,同时由于自己经常同时在多台电脑上操作调试程序(调试网络程序、自己电脑与港口电脑),需要不断同步代码,之前自己一直使用的比较土的【文本比较器】来判断 程序中哪些地方修改了。虽然后期加入了 修改历史history.txt这个文件,但总是忘记更新该文件。
考虑到最近比较火的版本控制(Version control),下午自己就学习了一把,将版本控制及相关文件的更新比较操作交给计算机来完成。
首先,自己一直听说代码托管软件GitHub,注册了之后突然想到自己之前用过的TortoiseSVN同步到新浪云 及 从开源软件wireshark获取代码,就考虑能否通过SVN来将代码同步到github,然后在另一台电脑编辑时先从网上仓库下载代码,然后编辑、调试、运行后再次同步到网络上。 于是想去找Github上自己的repository的路径,几经辗转 发现git跟SVN是两个不同的东东。 Git是分布式存储控制,每个成员可以下载、编译生成自己的分支,相互之间互不冲突,就像一棵树不断的长出各种躯干叶子一样。而SVN是集中式存储,存在一个中央代码仓库,每个成员取的都是相同的代码,本地编辑修改后,SVN服务器会检测每个成员上传的代码的差异,最终实现不同成员的修改均同步到服务器(而非最后提交的覆盖之前其他成员提交的代码)。 由于自己的应用相对简单,同时需要统一的版本管理,为此采用SVN方式托管自己的代码。总结一句:Github适合linux,最终形成各种发行版;SVN适合windows,最后统一成一个windows 8之类的产品。
SVN服务器选择:
考虑将自己的代码托管到互联网,在公司家里 任何地方均能访问。 参考SVN 在线代码托管工具,尝试了code.google.com,速度太慢,最终采用http://riouxsvn.com/
如果在局域网使用,则可考虑用TortoiseSVN建立局域网SVN服务器。首先在本地建立repository根目录,然后通过cmd命令执行:SC create svn1.8Ricky binPath= "\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" -- service --root \"D:\APMServ5.2.6\www\repository\"" depend= Tcpip start= auto
实现建立windows服务,开机自启动svn server功能。 (如果偶尔使用一次SVN,则考虑使用svnserve.exe --daemon),参考SVN环境的搭建
同时
通过右键→新建一个repositoryFolder之后,必须修改以下三个文件:
svnserve.conf:
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
passwd:
[users]
harry = harryssecret
authz:
[groups]
[/]
harry = rw
############################################
passwd
# 增加[users]组中 用户名=密码
# 如 user=password
authz
#
# [groups]下面增加
[/]
user=rw
# [/] represents the root directory, user=rw represents the user "user" has read/write authority.
如果建立多个repository仓库,则每个仓库内必须单独修改上述三个文件,之前自己就犯错误了,导致只能同步一个仓库的代码.
建立好仓库,先import一次源代码。 之后每次工作之前先update一下本地代码,完工后commit一下,保证协同合作。