话说以前自己做的一些小项目,经常出现忘记保存、突然断电等令人抓狂的事情。后来想到的办法是备份,这备份又有一个进化的过程,最先是建一个文件夹,隔一段时间压缩一下放进去,但是这个命名实在是麻烦,后来傻乎乎的做了个工具,调用命令行压缩,命名时自动把当前时间放进去,后来发现WinRAR就有这个功能后才知道自己真的傻乎乎了。

废话说了这个多,其实今天我想说的是版本控制。话说之前经常接触到版本控制相关的咨询,说程序猿必须使用版本控制啊,用了版本控制即牛逼又装逼啊,说得我热血沸腾啊,赶紧各种尝试,尝试的结果就是除了去github、google code之类的地方clone人家牛逼的代码瞧瞧外没有更进一步的使用了。
说到底,以前不仅没这方面的意识更没这样的需求,以为版本控制必须要个神马服务器,必须要遵守神马协议,必须多人协同工作才有必要,个人还是勤备份算了。
这段时间,在这个小公司,我需要跟别人一起写代码了!五个人做同一个东西,我改改,他改改,我改改,你改改,再每个人又发给我汇总,毛啊,原来我改好的东西咋没了啊!虽然有点冒火,但得找解决办法啊,第一想到的就是之前尝试的牛逼版本控制。
正好装了个TortoiseSVN,先试试吧……
首先,这代码存哪里啊,存到开源社区,不太合适吧,公司内部项目,存到私人代码寄存服务?收费好像不划算,不收费不可靠啊,存网盘吧,以前似乎用过同步盘之类的东西备份东西,比如金山快盘就不错,就是速度有点慢,听说百度网盘也能同步了,那就用百度吧。
好,下面开始总结折腾出来的结果,前面的都是废话!!!!
这得从我知道了原来可以在本地建版本库开始……

一、建立本地版本库
1、装了TortoiseSVN后,一般集成到资源管理器里,新建一个文件夹,右键->TortoiseSVN->在此创建版本库就行了,比如我建在E:\MySVN
2、然后就可以去版本库浏览器添加一个工程文件夹进来了,确认后工程文件夹下的文件就添加到这个E:\MySVN里来了,具体文件结构先不管
3、这回可以把原来的工程文件夹里的东西删除了,空白处右键->检出,填上file://E:\MySVN\工程名,东西又回来了。当然应该也可以先去版本库浏览器里建文件夹然后再到其他地方检出,然后建工程
4、这回每次修改完后在工程文件夹下右键->提交就可以了,每次还能填写日志,很是方便啊,更重要的是每次只提交你改过的部分,比全部打包备份高级多了。直到这里我才开始激动不已。
 
既然可以在本地存,当然也可以有办法让局域网内的其他人访问,不过我还是想搭建一个专门的svn服务器,这样操作:
1、下载一个Setup-Subversion-1.8.8.msi,这是目前的版本,安装好后,呃,不能打开(貌似是跟Apache搞在一起的东西,我先不管Apache了)
2、打开cmd,输入svnserve -d -r E:\MySVN就可以了
3、然后TortoiseSVN里地址就能填svn://loacalhost/了,唆使别人用的时候改成自己的IP
但是这样有个麻烦,那个svnserve不是以服务运行的,运行后有个cmd的窗口,很碍眼。解决方案是这样的:
1、新建个svnServer.bat
svnserve -d -r "E:\MySVN"
2、同文件夹下新建个svnServer.vbs
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c startSVNServe.bat",vbhide
3、每次只要运行svnServer.vbs就行了,也可以添加到开机启动
(话说还能这样搞隐藏窗口,今天才知道,确实挺好玩的啊)
 
同步到网盘
这个就不需要多说了,操作都比较简单。如果文件夹不好整理到一起,在win7上可以用mklink,xp好像也有个junction,得下载,似乎还没win7方便。
 
现在,我终于可以很方便也很享受地修改代码了!!!
以后再研究下那个牛逼的git

开始使用版本控制,局域网搭个SVN的更多相关文章

  1. 版本控制工具比较-CVS,SVN,GIT

    首先介绍几个版本控制软件相互比较的重要依据: a.版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式.在客户端/服务器模式下,每一用户通 ...

  2. 局域网简单的SVN服务器的搭建

            最近组织在做一个比较大的项目,需要多人参与配合,经常会对项目文件增删查改,因此使用了SVN作为项目管理工具.但大家都很"盲",所以搭建SVN服务器的任务就落在了我这 ...

  3. 实现外网訪问局域网内的SVN——花生壳+visiualSVN实现外网訪问局域网内的SVN(三)

    经过前两篇文章.到眼下为止,我们已经获取了外网域名而且搭建好了SVN server.接下来,我们就总结一下怎样实践实现一下訪问局域网. 1.安装VisiualSVN Server(可见:http:// ...

  4. 版本控制(1)——SVN

    一.工具下载 下载SVN: http://subversion.apache.org/ 我们选择Windows系统中的可视化的VisualSVN 如下图,左边是客户端,右边是服务器端,我们下载服务器端 ...

  5. 版本控制之二:SVN的初步使用(转)

    转自http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407979.html 上一篇介绍了VisualSVN Server和Tortoise ...

  6. SVN版本控制安装配置说明

    版本控制好工具有SVN.CVS.VSS等多种,他们的优劣在此不说明,请网络参阅. SVN支持多种平台,此文仅描述Windows平台下使用说明. SVN客户包含客户端和服务端.Windows平台下客户端 ...

  7. 版本控制— SVN & git

    版本控制—— SVN & GIT 提问 什么是版本控制? 是能够一直监视代码文件的变更,并存储这些文件以便将来引用的一种机制(软件) 为什么要使用版本控制? (1)记录哪个开发人员做了变更 ( ...

  8. vs2013搭建团队版本控制 TFS、SVN

    项目使用vs2013开发,之前使用过svn进行版本控制,由于长时间未使用,记录备用. 一.TFS Team Foundation Server(TFS) 是微软提供的一个团队协同办公的管理工具,项目总 ...

  9. 取消svn版本控制

    删除项目中的版本控制,即删除项目文件夹下的所有.svn文件夹(在做项目的时候,有时候想把项目拷回去看看,但是文件太大了,而且压缩起来很慢.这主要是因为在项目中有大量的.svn文件夹.所以才想把.svn ...

随机推荐

  1. [Everyday Mathematics]20150116

    设 $\al_n\geq 0$ 且 $\dps{\vlm{n}\al_n=0}$, 试求 $$\bex \vlm{n}\frac{1}{n}\sum_{k=1}^n \ln\sex{\frac{k}{ ...

  2. JMeter使用jar进行压力测试

    最近需要对改造的redis缓存接口做压力测试,使用了开源压力测试工具JMeter,分享一下自己的使用经验,希望能对需要进行压力测试的开发同学有所帮助. JMeter介绍 JMeter是Apache软件 ...

  3. Drawer Layout

    http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout <menu ...

  4. webdriver(python) 学习笔记三

    知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...

  5. Hadoop的partitioner、全排序

    按数值排序 示例:按气温字段对天气数据集排序问题:不能将气温视为Text对象并以字典顺序排序正统做法:用顺序文件存储数据,其IntWritable键代表气温,其Text值就是数据行常用简单做法:首先, ...

  6. 总结:ADO.NET在开发中的部分使用方法和技巧

    如何使用 SqlDataAdapter 来检索多个行 以下代码阐明了如何使用 SqlDataAdapter 对象发出可生成 DataSet 或 DataTable 的命令.它从 SQL Server ...

  7. Spark生态之Spark MLbase/MLlib

  8. snprintf 返回值

    在平时写代码的过程中,我一个推荐带有n系列的字符串函数,如 strcat ->strncat sprintf->snprintf 我们有类似的一个函数 void dump_kid(std: ...

  9. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

    1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...

  10. C#正则表达式判断字符串是否是金钱

    public static bool IsMoney(string input) { string pattern = @"^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{1,} ...