写程序从SVN开始

一:SNV的最常用的几个基本操作

svn作为目前最为流行的版本管理软件(仅次于github),与我们的代码寸步不离,给开发人员带来了极大的便利。但是对于初学者而言,一次又一次的冲突确实让
人不免心烦。这是因为初学者还不太了解svn的版本生成机制,看似简单的提交操作就是不成功;这里我以一个简单的案例来说明这个问题。

1、增加文件
使用SVN客户端(通常叫做小乌龟)往SVN服务器里面添加文件有两种方式:

a、使用check out 将版本库里面的文件(没有文件也可以)检出到本地指定的目录,这样一来本地的目录就处于版本管理当中,我们把想要被管理的文件移动到目录里,然后点击add表示请求被管理,最后提交即可。这种方式并非最佳方案,只适合刚刚新建的版本库或版本库文件较少的情况。

b、最佳方案是进入我们想要被管理的文件目录,然后点击空白处弹出菜单,使用import导入到版本库。

2、删除文件
最常用的方式是:check out项目,删除某个文件,然后提交(这个文件虽然被删了但是仍然可以提交),这时候版本库里面的文件就会被删除。

3、还原
选中我们要还原的文件,右击选择还原。

4、对比
在提交多个文件或者与资源库同步的时候,会弹出填写日志的窗口,这里面双击要提交的文件,就会出现对比窗口。

5、与资源库同步
与资源库同步于我看来是整个SVN里面最灵魂的一个功能,因为这个功能可以让你知道有哪些文件需要更新,有哪些需要提交,有哪些已经产生了冲突。选中要与资源库同步的项目或者文件,右击选择同步即可。

6、更新版本库中已经删除的文件
如果我们自己提交的文件被别人删除了,之后我们再更新这个文件,那么本地的文件也会被删除。

二:SVN常见的问题和解决方法

1、为什么提交不成功?
首先我们要明确的是提交文件不会产生冲突,只会出现提交不成功,出现这个问题是因为我们在没有跟新文件的情况下,修改了文件的内容
企图提交到服务器;于是直接弹出一个错误窗口,提交失败。
那么为什么没有更新就不允许提交呢?对于这个问题我想我还是有必要先说一下SVN的版本机制:
假设svn服务器里有一个版本仓库jeeProject ,版本库里面有一个文件App.java ,version=1 ,A、B两个人同时更新了代码,他们使用的都是最新版本,5分钟之后A提交了代码,由于是最新版本提交一定不会出错,这个时候服务器的版本就会更新到2,A因为提交了代码,所以文件的版本也会变成2 ;但是B的版本仍然还是1 ,10分钟之后B提交了代码,因为B没有更新文件版本仍然是1 ,如果SVN让B成功提交代码,那么问题就来了,B提交了代码之后,文件的版本会在他本地文件的版本基础上加1,这个时候也是2,SVN绝不允许有两个相同的版本号,于是惯性思维,后面生成版本为2的文件会把前面生成版本为2的文件覆盖掉。20分钟之后A觉得自己写的代码可能存在一些问题,于是就想还原,结果看到的却是B的代码。这就是为什么SVN要为每一个提交代码的用户创建一个新的版本,因为只有这样才能够让他们随时找到自己的代码。
于是上面的问题就迎刃而解了,只要先更新再提交就一定不会出错。

2、为什么更新已经修改的文件会产生冲突?
因为SVN既要保证服务器的代码更新到你本地文件,又要保证你修改的程序不丢失,所以我们就看到了发生冲突的代码混淆在一起。解决这个问题的方法是:先还原代码到之前的版本,然后在跟新到最新版本,最后再把自己先前修改的代码黏贴到文件中,提交即可。

3、何为代码覆盖
这是个值得注意的问题,我们更新文件之后把别人写的代码修改错了,然后提交了,等到别人更新代码后再次运行程序莫名其妙的报错,这一系列操作称之为覆盖。 虽然别人提交的代码会生成唯一的版本一定是可以找到,但是我们还是应该尽量避免出现这个问题。

时间: 2024-10-05 04:33:11

写程序从SVN开始的相关文章

思考程序与写程序的关系

首先引用孔夫子的一句话:学而不思则罔,思而不学则殆. 首先,学而不思者罔这句话的意思就是如果做一件事情,我们只是为了完成任务才去做这件事情,如果我们不对问题进行思考,那么我们就会感觉知其然而不知其所以然. 思而不学则殆这句话就是,如果我们不动手去做,而一味的去思考结果,那么就会在一个点停滞不前. 其实我很赞成孔夫子的话,我个人认为这2句话很适合编程的人,当然“学而不思者罔”这句话,我个人觉得更适合于我们程序员. 其中造成学习而不去理解它的原理有几点原因. 任务本身的进度很赶,没时间去研究那么深刻

写程序引发的思考

 最近2个月除了完成日常的工作以外,还在练习数据结构这一块的知识,因为感觉数据结构自己还不是很熟悉,最近 完成的练习如下: 数据结构练习连接:http://blog.csdn.net/qlx846852708 1.顺序表的实现 2.单向链表的实现--通讯录 3.队列的实现--银行排队系统 4.c语言猜数字小游戏 5.计算圆周率 6.输入年.月.日计算星期几 7.linux下tcp和udp的通信 8.熟悉了makefile的编写 9.linux下文件夹加密小程序 多动手: 总之,感觉就是还是要

一个平时写程序通用的Makefile样例

//需要目标名和程序名字相同 .PHONY:clean all //伪目标 CC=gcc CFLAGS=-Wall -g BIN= //目标 all:$(BIN) %.o:%.c $(CC) $(CFLAGS) -c $< -o [email protected] clean: rm -f *.o $(BIN) 平时写程序肯定需要反复的修改,有了这样一个makefile程序会方便很多的.动手试一下.

用CIL写程序:写个函数做加法

前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点探索它,掌握它的欲望.那么小匹夫就继续扯一扯CIL,接下来的几篇文章也都以上一篇文章中的那个CIL实现的Hello Wolrd程序为基础,继续通过写CIL代码实现一些功能的方式来和各位探讨交流,同时也加深自己对CIL的掌握和印象. 人生就是做加法 "我的肩上搭着她得衣裳,我嗅着她留在衣服上的体香..

019写程序在一棵二叉树中找到两个结点的最近共同祖先(keep it up)

写程序在一棵二叉树中找到两个结点的最近共同祖先. 分两种情况来讨论这个题: 第一种情况结点中没有指向父结点的指针 第二种情况接种有指向父节点的指针 我们先看第一种情况,结点中没有指向父结点的指针. 我们可以采用暴力搜索每一个结点,如果这个结点的子树中 有已知的两个结点,那我们就继续沿着左右子树找,如果左子树 能找到,我们就继续沿着左子树找,如果有子树能找到,我们就 沿着右子树找,不存在两个子树都能够找到. 代码: struct TreeNode {<pre name="code"

代写程序|java二叉树字典查询(qq 928900200)

This assignment will help you practice and understand better the Binary Tree and Binary Search Tree data structures, their operations and implementations. You are to design a small dictionary using the Binary Search Tree data structure. Each entry ma

关于郭天祥51开发板无法烧写程序问题的解决(Prolific USB-to-Serial Comm Port)

1. 事件背景: 由于使用了win8系统,之前购买的郭天祥C51开发板在通过一个两头都是usb口的下载线下载程序时出现了问题:下载工具stc isp无法连接到开发板上的串口,所以无法下载程序到c51开发板上,错误显示如下 2. 寻求解决方法 本人尝试了网络几乎所有的方法,包括更新驱动.恢复驱动到旧版本(可能有用,我没用)等等方式都没有成功.这导致本人当时几乎放弃了这块板子.在尝试过程中我也想过用u转串连接板子上的串口到电脑的usb口来下载程序,但是也没有成功. 3. 踏破铁鞋无觅处,得来全不费工

可变变量常用用于在写程序的时候不确定需要用哪个变量去处理数据的情形

可变变量常用用于在写程序的时候不确定需要用哪个变量去处理数据的情形.$gif = “logo.gif”;$jpg = “logo.jpg”;$png = “logo.png”;假设用户可以填写一个表单,以决定其想要什么类型的logo图片,$f1 = $_GET[‘fileType’]; //用户选择所需要的图片类型的后缀,可以是“gif”,“jpg”,“png”sendFile( $$f1 ); //假设sendFile()可以发送文件,

关于自己为什么一个妹子想写程序并且希望能够做的不错的想法(写给自己的总结)

很小的时候天天缠着外婆还有姐姐教我画画,那时候最大的愿望是做个画家:后来上了学,对居里夫人特别崇拜,我想自己要为将来做个科学家努力了:初中高中6年一直都是天天扑闪着好奇的眼睛乖乖听课的~我也不知道我为什么对什么都感兴趣:好吧,等我上了大学突然发现也许这才是生活,想为父母减轻一点负担同时为了证明自己可以挣到钱~所以我得为自己的生活费操心了,刚开始和几个学长去发传单,忙活一下午才十几块钱,那两个学长时不时偷懒,只有我傻乎乎的一张张的发,发完了自己的还把学长的拿过来替他们发了,自己忙的不亦乐乎,当然学