说说cvs的本地化管理(五)

说说cvs的本地化管理(五)

下午上网去找那个sh.exe。到cygwin网站http://cygwin.com瞄瞄才知道,这个玩意儿好像知名度还挺高的,只是原来me不知道而已,嘿嘿。粗粗浏览一下网站,发现好像要安装整个cygwin才行,bash、sh之类的是其中的组件。其实说穿了,cygwin就是个能在windwos环境下支持unix、linux工具运行的模拟器
在其主页上点击install now,下载了一个两百多K的setup.exe。这么小!霍霍……点击运行才发现原来没有这么简单,因为安装界面中出现了download安装库的提 示,已经到了这一步那就继续吧。出现选择境像服务器的选项,先选了一个ftp,没有反应,后来才意识到可能是me在局域网内部的问题。其它专业的ftp工 具me平常都不能用,在这里对ftp进行操作应该也是没戏的,呵呵。选择了一个http的服务器进行,果然开始下载了。怎么?只有六十多K!很快就下载完 了,又出现了一个窗口,晕,好复杂,是个选择安装什么组件的窗口。真是一波三折哟!
me完全不懂它的运作机制,怎么会知道该选择哪些组件呢!就默认吧。next,继续,开始下载。搞了好半天,me一看进度,才4%;查看 下载的目录的大小,已经有了12M。掰指头算了算。哇,即使是默认安装也需要下载近300M的东东啊!看着龟速挪动的进度条,me只好让这里继续下载的同 时再找其它办法咯。

祭出google大法。嗨,找到了提供cygwin本地安装版本的下载地址。其中一个只有40多兆,地址为http://ks.onlinedown.net/down/Cygwin0528.rar当然是它了。找到蚂蚁下载,十分钟就完成了。安装成功!
可不能忘记要它是作什么的哟。赶紧运行NetBean,到version control的设置窗口,设定bash的路径(就在cygwin安装目录下的bin中)。点击ok,哈哈,这次终于没有出错提示了。init,成功。然 后从cvs的repository中checkout了388ablum模块。呵呵,好像行了。具体的便利又得靠me慢慢摸索了,呵呵,不过还是高兴 啊……
 再岔开说说cygwin 吧。把安装目录下bin放在了系统路径中,下面为数众多的unix工具都可以运行,晕,厉害呀。不过除了ls外其它的命令me都不知道是干什么的,嘿嘿, 以后慢慢学吧。用teleport把cygwin的主页拉到硬盘上,初步看了一下,功能真多。cygwin应该是个可以在windows下运行的模拟 unix环境的虚拟环境!
因为完全按照NetBean的help中所说,设定工作目录,init,然后checkout。结果checkout出来的并不是me正 在工作的版本!可能是me对cvs的命令还没有用熟的原因吧,但这样可不行啊,毕竟最终还是要回到目前的工作上来。把repository目录备份后,小 心翼翼的把NB下版本控制中的working directory设置为当前目录,呵呵,成了,在版本控制板块中显示出当前工作的版本和状态。随后对几个文件做了些改变用来测试,在版本控制模块中操作 成功,基本和wincvs中操作是一样的,甚至更方便。 比如添加文件在wincvs中就不是很方便,对没有进入 repository的新文件,在wincvs的浏览器中根本就不能显示,需要把文件名称记好再操作add、commit等命令;但是在NB的cvs中就 可以直接显示并选中直接执行add、commit操作,呵呵,爽。这下终于搞定。不过以后还得深入学习cvs的强大功能^_^

Technorati Tags: , , ,

说说cvs的本地化管理(四)

说说cvs的本地化管理(四)

最后通过完全和NB无关的方式实现了程序的版本管理,应该算是一种迂回。通过几次试验操作,现在已经基本能够实现版本管理的一些基本功能,但对分支管理、版 本融合以及目录移除添加还没有完全掌握,只能留待以后在需要的时候补充学习了。虽然已经能够使用这个功能,但对NB支持cvs而只能通过外部方式实现的现 状耿耿于怀,NB既然实现了此功能,不把它发挥出来岂不可惜!不死心,晚上又试了试Mounting Version Control,这次NB好像能够识别出me已经正在使用的repository,因为cvs.exe的路径已经放在系统路径中了,设置了work directory后直接finish。哦赫,和以前一样,又出错了:

the following command failed exectue in the system:
sh.exe -c cd “”D:\mycode\0wrkdir\j2me_other///.””&&   “”cvs”” -d “”:local:””  -f status -l

气愤,马上把它unmount。回到设置窗口仔细研究,在use command line cvs client选项中unix shell中显示tips为“unix shell for windows 95/98/ME”,其默认值是sh.exe。想到出错的不能执行的命令,难道是这里的问题?!

拿那个tips的内容在帮助系统中搜了一下,嘿嘿,果不其然,居然找到了这么一条:

VCS Support on Windows 95, Windows 98, and Windows ME,即在win95、98、ME下的vcs支持,内容中是这样说的:Windows 95, Windows 98, and Windows ME do not have a command shell that enables the IDE to work with command-line version control systems. Before you can use a command-line version control system with the IDE on these systems, you need to install a UNIX shell to interpret the commands. The sh.exe and bash.exe programs, which are available from Cygwin at http://sources.redhat.com/cygwin/, are both suitable for this task.
呵呵,原来如此。看来me要上网搜个sh.exe来装装看咯。

Technorati Tags: , , ,

说说cvs的本地化管理(三)

说说cvs的本地化管理(三)

初步掌握了cvs的命令行用法后me又回到了wincvs,也就是windows版本的图形化的cvs。因为基本原理已经比较清楚,这下看着 wincvs 下的各种菜单、按钮不再感到陌生,呵呵。先导入了昨天试验用的项目,运行基本正常(也就是能正确显示出和命令行工具一样的结果),然后把手头的两个项目也 倒进去了,随后就是在NetBean中把该project中心mount。OK,wincvs和NB终于可以联合使用了,应该说在工具操作方面有上升了一 个台阶,对软件开发的益处是显而易见的,但具体有多大帮助可能要完全取决于me的编程功力的提高,呵呵,再好的工具放到菜鸟手里也发挥不出威力!
因为wincvs暂时能够满足me的需求,再说也确实想停停手在j2me上花点功夫,所以ant的使用就过段时间再学^_^
!!!使用工具前对其功能进行全面的了解是非常有必要的;看帮助文件是必须的,不管有多累;多用网络搜索,会有意想不到的收获;要有坚不可摧的决心。

Technorati Tags: , , ,

说说cvs的本地化管理(二)

说说cvs的本地化管理(二)

六、从项目中删除文件。
1、操作步骤和添加的操作差不多,差别在于add改为remove,相同之处在于都需要再commit一次。
2、注意把工作目录下的文件也做相应删除。
3、!!!CVS只是删除了当前版本的指定文件,它以前的版本依然存在,除非它恰好仅有1.1版本。
4、!!! 删除目录的方法就是删除目录下的所有文件。用户不能直接删除目录本身,目前CVS中也没有方法可以办到这一点。可以在cvs update或cvs checkout命令中使用-P选项来让CVS删除工作目录中的空目录 (注意cvs export命令总是删除空目录的)。可能最好的办法就是每次在上面的命令中指定-P选项。如果用户希望在工作目录中保留一个空目录,将不得不在该目录中 随便放一个文件 (例如放一个.keepme)文件来防止它被带-P的命令删掉。
 七、设定特定版本号。
1、程序稍具规模,相对比较成熟的时候,可以给所有的代码设置为某个版本的标签。
2、cvs tag test_1,默认递归对子目录进行操作 取出该版本的命令为cvs checkout -r test_1 sound,在当前目录下生成sound子目录并放置所有标记为test_1的代码。
 八、更新当前目录下的文件。
1、命令开关为update,主要用于多用户操作时的同步。
2、对单用户可以通过-j命令实现不同版本的合并。cvs update -j 1.8 -j 1.2,可以忽略自1.2版本到1.8版本所做的改变。
 九、分配版本号。
1、把所有的文件(包括那些没有被修改的文件)更新到3.0版本,你可以调用以下命令: cvs commit -r 3.0
  2、!!!新的版本号必须比现有所有文件的最大版本号还要高。
 十、分支管理。
1、如果正在开发某个高版本,低版本出了问题,不想放下高版本的工作,这时候可以设置分支,并对低版本进行修订;修订工作结束后还可以和现有的高版本进行融合。
2、基于当前工作拷贝建立分支。cvs tag -b rel-1-0-patches
3、也可以直接在源码库中基于某个版本或者标签建立分支。cvs rtag -b -r rel-1-0 rel-1-0-patches tc,注意使用的rtag命令。
4、融合该分支所做的改变到当前工作目录。cvs update -j branchname;cvs commit

Technorati Tags: , , ,

说说cvs的本地化管理(一)

说说cvs的本地化管理(一)

昨晚闹腾到三点钟都没有解决问题。仔细查阅了帮助文件,找到了这个方面的内容:如果提供cvs命令行工具的话,通过一定的设置,是可以支持本地化的版本配置管理的。兴冲冲的去试
过程如下:
1、安装了wincvs12,目录中有cvs.exe命令支持命令行运行;
2、在NB update中心下载了cvs模块并加载;
3、菜单中出现版本控制的选项,选mount version control,出现设置对话框,选cvs的profile,并设置类型为local(如帮助所提示),然后依次设置working path和reporisty,确定。
4、init,正常;checkout,正常;但是,进行commit操作时提示bad command or filename;然后无论进行其它任何操作如add、remove等都出现此错误提示;
5、再次对cvs profile进行设置,手动设置cvs路径,以及unix shell的解释器为command.com,问题依旧。

04-9-29 13:48

中午上网查询,首先在中国java网发帖求助(http://www.cjsdn.net/post/view?bid=7&id=114488&sty=1&tpg=1&age=0),光靠别人可不行,于是me就用google搜,呵呵,有用的真不多呀。不过看到了一个有用的,用CVS来管理自己的程序(http://www.fanqiang.com/a6/b9/20010809/1500001096.html)。
一、初始化环境并设置repository。
1、 如法炮制,me首先设置了环境变量(说明一下,me的win98),在dos窗口中set CVSROOT=E:\MYDATA\repst\CVSROOT,然后运行set查阅变量已经设置好;谁知道运行cvs init的时候出了问题,出错提示“CVS.EXE [init aborted]: no such host E”。在例子中的os都是unix或者linux,路径如/user/CVSROOT之类,难道cvs不支持windows的路径系统?!
2、找到cvs.hlp帮助文件,翻啊翻啊,翻的累死了,终于在Node: Repository中发现了这么一句:But if (under Windows NT, for example) your local repository is c:\src\cvsroot, then you must specify the access method, as in :local:c:\src\cvsroot.呵呵,原来还有这么一说!随后为了查询repository的中文意思(汗!),结果用google发现了cvs帮助的中文版本(http://cvsdoc-zh.gro.clinux.org/cvsdoc/zh_CN/html/Repository.html#Repository),呵呵,可见互联网是个好东东!
3、好,言归正传,运行cvs -d :local:E:\MYDATA\repst init,什么提示都没有,查阅一看,多出了一个CVSROOT的目录,下面有好多文件,可见init已经成功了,哈哈,终于前进了一步。
二、导入一个例子项目到cvs中去。
1、进入该项目所在的目录E:\MYDATA\JAVAPRO\sound;
2、 然后运行cvs import -m “start my project: sound” sound heart5 start,哟乎,不好,那个该死的“no such host E” 居然又出现了!!!晕死!难道working directory也需要使用:local方式存取,试了好久,总是不成功。
3、没有办法,只好求助于google。这次很惨,用关键词“cvs import “no such host””搜索居然没有中文的结果,连e文的也只有21条且几乎无用。回头再找那个中文帮助文件中的“告诉CVS源码库放在哪里”部分(http://cvsdoc-zh.gro.clinux.org/cvsdoc/zh_CN/html/Specifying-a-repository.html#Specifying%20a%20repository),觉得可能是环境变量CVSROOT的问题。
4、 哈哈。调试成功,命令为cvs -d :local:E:\MYDATA\repst import -m “start my project:sound” sound heart5 start,运行后显示No conflicts created by this import,到CVSROOT下看,已经设置了一个sound目录并且存放的文件都已经被cvs接管了,因为各个文件都被打上了cvs的标记,比如 branch、log之类的标签。
5、???美中不足的是连已经编译的class文件都import了。按道理应该有过滤选项的,下次再试吧。
 三、从CVS中导出项目。
1、把源sound文件夹备份后删除。
2、 新建一个wrktmp的目录,进入该目录,运行cvs checkout sound。哇,那个“no sunch host E”又出现了。这次可不怕,添加定位repository的命令cvs -d :local:E:\MYDATA\repst checkout sound,OK,正常了。
3、查看wrktmp目录,下面多了个sound目录;进入,里面是刚才导入的文件,不过多了个子目录cvs;进入cvs,里面有三个文件,Root、Repository、Entries。
4、!!! 每次都要手动输入-d指定repository的位置真挺烦的。能不能设置环境呢?!试了一下,成功。设置环境为set CVSROOT=:local::E:\MYDATA\repst 试运行cvs checkout sound,系统提示“CVS.EXE checkout: Updating sound
”,应该是成功了,呵呵。

四、保存修改到CVS中。
1、对其中一个原文件做了修改,添加了一个函数。
2、运行cvs commit  -m “add a function”,显示成功,刚才改变的文件的版本号变成了1.2。
五、添加文件到项目中。
1、从其它地方拷贝过来一个java文件。
2、cvs add About.java,显示添加成功,并提醒要用commit功能才能完全加入;cvs commit About.java,弹出注释文本提醒(此处自动打开记事本),录入注释信息,完成添加操作。
3、!!!添加文件,运行add后还需要commit,才算真正签入源码库。
4、???添加一个目录时好像有些问题,暂时不能正常操作,具体表现为目录下的文件不能自动签入源码库。
       !!!add命令的执行方式不是递归的。你不得不指明你准备添加到源码库中的文件名和路径。而且,每个目录在添加新文件到其中之前,还必须单独地添加进源码库。
 六、从项目中删除文件。
1、操作步骤和添加的操作差不多,差别在于add改为remove,相同之处在于都需要再commit一次。
2、注意把工作目录下的文件也做相应删除。
3、!!!CVS只是删除了当前版本的指定文件,它以前的版本依然存在,除非它恰好仅有1.1版本

Technorati Tags: , , ,