Linux下把多个子目录中的源代码添加到CVS仓库的Bash脚本

Linux下把多个子目录中的源代码添加到CVS仓库的Bash脚本

本文链接:http://codingstandards.iteye.com/blog/792113    (转载请注明出处)

要求描述

  在src目录下,包含多个子目录,每个子目录下都有C/C++的源代码,现在要把它们自动加入到CVS仓库中,只能将源文件(比如.h文件,.c文件,.hpp文件,.cpp文件,makefile)提交,不能包含编译中间产生的临时文件(比如.o文件)和最终执行文件。

  当把一个目录添加CVS仓库之后,目录中会增加一个CVS目录,CVS目录中的几个文件(Entries、Repository和Root)是用来保存一些cvs版本管理信息的。要注意的是cvs这个东西有个问题,使用cvs add CVS时也可以将CVS这个目录添加到CVS仓库中,因此要避免这种情况。

版本演化

版本0

基本思路:遍历每一个子目录,CVS目录除外,如果一个子目录中没有CVS子目录,那么需要添加该目录,否则忽略;然后把该子目录下的源文件添加到CVS仓库中。如下所示:

 

文件:add2cvs0.sh

#!/bin/sh

for d in *
do
	if [ -d "$d" -a "$d" != "CVS" ]; then
		if [ ! -d "$d/CVS" ]; then
			cvs add "$d"
		fi
		cvs add "$d/*.h" "$d/*.c" "$d/*.hpp" "$d/*.cpp" "$d/makefile" "$d/*.java" "$d/*.html"
	fi
done
cvs commit

 

试一下,发现它会把*.h本身作为一个文件名传递给cvs add命令,实际上并不是每个目录中都包含这几种扩展名的文件。因为有些是纯C编写的,有些是用C++的。

[root@rhel55 src]# ./add2cvs0.sh
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test0/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test1/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test2/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test3/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test4/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test5/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test6/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test7/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test8/*.h,v: Invalid argument
cvs commit: Examining .
cvs commit: Examining test0
cvs commit: Examining test1
cvs commit: Examining test2
cvs commit: Examining test3
cvs commit: Examining test4
cvs commit: Examining test5
cvs commit: Examining test6
cvs commit: Examining test7
cvs commit: Examining test8
[root@rhel55 src]#

 

版本1

改进思路:把cvs add 后面的那几种通配符表示的文件名,改用Bash中的大括号表示。比如*.{h,c}实际相当于$.h *.c的简写法。

 

文件:add2cvs1.sh

#!/bin/sh

for d in *
do
	if [ -d "$d" -a "$d" != "CVS" ]; then
		if [ ! -d "$d/CVS" ]; then
			cvs add "$d"
		fi
		#cvs add "$d/*.h" "$d/*.c" "$d/*.hpp" "$d/*.cpp" "$d/makefile" "$d/*.java" "$d/*.html"
		cvs add $d/*.{h,c,hpp,cpp,java,html,xml}
	fi
done
cvs commit

 

试一下,还是不行,跟上面一样。因为只是把参数改一下写法,实际上是等同的。

[root@rhel55 src]# ./add2cvs1.sh
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test0/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test1/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test2/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test3/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test4/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test5/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test6/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test7/*.h,v: Invalid argument
cvs [server aborted]: Couldn't open RCS file /CVSWEBX/web_spider/src/test8/*.h,v: Invalid argument
cvs commit: Examining .
cvs commit: Examining test0
cvs commit: Examining test1
cvs commit: Examining test2
cvs commit: Examining test3
cvs commit: Examining test4
cvs commit: Examining test5
cvs commit: Examining test6
cvs commit: Examining test7
cvs commit: Examining test8
[root@rhel55 src]#

 

版本2

改进思路:直接使用通配符表示的文件参数(比如*.h)在传递的时候,如果没有可以匹配的文件,那么Bash就会把该参数本身传递。因此想到先用ls命令把这些文件列出来,把输出作为参数来传递。

 

文件:add2cvs2.sh

#!/bin/sh

for d in *
do
	if [ -d "$d" -a "$d" != "CVS" ]; then
		if [ ! -d "$d/CVS" ]; then
			cvs add "$d"
		fi
		#cvs add "$d/*.h" "$d/*.c" "$d/*.hpp" "$d/*.cpp" "$d/makefile" "$d/*.java" "$d/*.html"
		cvs add $(ls $d/*.{h,c,hpp,cpp,java,html,xml,sh} $d/makefile)
	fi
done
cvs commit

 

试一下,发现效果还不错。如果匹配的文件不存在,ls会报错,错误信息是输出在标准错误设备上的,而$(ls *.h)只把标准输出的信息变成字符串。

[root@rhel55 src]# ./add2cvs2.sh
ls: test0/*.h: 没有那个文件或目录
ls: test0/*.hpp: 没有那个文件或目录
ls: test0/*.cpp: 没有那个文件或目录
ls: test0/*.java: 没有那个文件或目录
ls: test0/*.html: 没有那个文件或目录
ls: test0/*.xml: 没有那个文件或目录
ls: test0/makefile: 没有那个文件或目录
cvs server: test0/test0.c already exists, with version number 1.1
cvs server: test0/test0.sh already exists, with version number 1.1
ls: test1/*.h: 没有那个文件或目录
ls: test1/*.c: 没有那个文件或目录
ls: test1/*.hpp: 没有那个文件或目录
ls: test1/*.java: 没有那个文件或目录
ls: test1/*.html: 没有那个文件或目录
ls: test1/*.xml: 没有那个文件或目录
cvs server: test1/makefile already exists, with version number 1.1
cvs server: test1/test1.cpp already exists, with version number 1.1
cvs server: test1/test1.sh already exists, with version number 1.1
ls: test2/*.h: 没有那个文件或目录
ls: test2/*.c: 没有那个文件或目录
ls: test2/*.hpp: 没有那个文件或目录
ls: test2/*.java: 没有那个文件或目录
ls: test2/*.html: 没有那个文件或目录
ls: test2/*.xml: 没有那个文件或目录
ls: test2/*.sh: 没有那个文件或目录
cvs server: test2/makefile already exists, with version number 1.1
cvs server: test2/test2.cpp already exists, with version number 1.1
ls: test3/*.h: 没有那个文件或目录
ls: test3/*.c: 没有那个文件或目录
ls: test3/*.hpp: 没有那个文件或目录
ls: test3/*.java: 没有那个文件或目录
ls: test3/*.html: 没有那个文件或目录
ls: test3/*.xml: 没有那个文件或目录
ls: test3/*.sh: 没有那个文件或目录
cvs server: test3/makefile already exists, with version number 1.1
cvs server: test3/test3.cpp already exists, with version number 1.1
ls: test4/*.h: 没有那个文件或目录
ls: test4/*.hpp: 没有那个文件或目录
ls: test4/*.cpp: 没有那个文件或目录
ls: test4/*.html: 没有那个文件或目录
ls: test4/*.xml: 没有那个文件或目录
ls: test4/makefile: 没有那个文件或目录
cvs server: test4/test4.c already exists, with version number 1.1
cvs server: test4/Test4.java already exists, with version number 1.1
cvs server: test4/test4.sh already exists, with version number 1.1
ls: test5/*.h: 没有那个文件或目录
ls: test5/*.c: 没有那个文件或目录
ls: test5/*.hpp: 没有那个文件或目录
ls: test5/*.java: 没有那个文件或目录
ls: test5/*.html: 没有那个文件或目录
ls: test5/*.xml: 没有那个文件或目录
ls: test5/*.sh: 没有那个文件或目录
cvs server: test5/makefile already exists, with version number 1.1
cvs server: test5/test5.cpp already exists, with version number 1.1
ls: test6/*.h: 没有那个文件或目录
ls: test6/*.c: 没有那个文件或目录
ls: test6/*.hpp: 没有那个文件或目录
ls: test6/*.java: 没有那个文件或目录
ls: test6/*.xml: 没有那个文件或目录
ls: test6/*.sh: 没有那个文件或目录
cvs server: test6/index.html already exists, with version number 1.1
cvs server: test6/makefile already exists, with version number 1.1
cvs server: test6/test6.cpp already exists, with version number 1.1
ls: test7/*.h: 没有那个文件或目录
ls: test7/*.c: 没有那个文件或目录
ls: test7/*.hpp: 没有那个文件或目录
ls: test7/*.java: 没有那个文件或目录
ls: test7/*.html: 没有那个文件或目录
ls: test7/*.sh: 没有那个文件或目录
cvs server: test7/makefile already exists, with version number 1.1
cvs server: test7/spider.xml already exists, with version number 1.1
cvs server: test7/test7.cpp already exists, with version number 1.1
ls: test8/*.h: 没有那个文件或目录
ls: test8/*.c: 没有那个文件或目录
ls: test8/*.hpp: 没有那个文件或目录
ls: test8/*.java: 没有那个文件或目录
ls: test8/*.html: 没有那个文件或目录
ls: test8/*.xml: 没有那个文件或目录
ls: test8/*.sh: 没有那个文件或目录
cvs server: test8/makefile already exists, with version number 1.1
cvs server: test8/test8.cpp already exists, with version number 1.1
cvs commit: Examining .
cvs commit: Examining test0
cvs commit: Examining test1
cvs commit: Examining test2
cvs commit: Examining test3
cvs commit: Examining test4
cvs commit: Examining test5
cvs commit: Examining test6
cvs commit: Examining test7
cvs commit: Examining test8
[root@rhel55 src]#

 

版本3

改进思路:把ls的错误输出摒蔽掉,通过将标准错误输出重定向到/dev/null就可以做到了。

 

文件:add2cvs.sh

#!/bin/sh

for d in *
do
	if [ -d "$d" -a "$d" != "CVS" ]; then
		if [ ! -d "$d/CVS" ]; then
			cvs add "$d"
		fi
		#cvs add "$d/*.h" "$d/*.c" "$d/*.hpp" "$d/*.cpp" "$d/makefile" "$d/*.java" "$d/*.html"
		cvs add $(ls $d/*.{h,c,hpp,cpp,java,html,xml,sh} $d/makefile 2>/dev/null)
	fi
done
cvs commit

 

试一下,目标基本达到。

[root@rhel55 src]# ./add2cvs.sh 
cvs server: test0/test0.c already exists, with version number 1.1
cvs server: test0/test0.sh already exists, with version number 1.1
cvs server: test1/makefile already exists, with version number 1.1
cvs server: test1/test1.cpp already exists, with version number 1.1
cvs server: test1/test1.sh already exists, with version number 1.1
cvs server: test2/makefile already exists, with version number 1.1
cvs server: test2/test2.cpp already exists, with version number 1.1
cvs server: test3/makefile already exists, with version number 1.1
cvs server: test3/test3.cpp already exists, with version number 1.1
cvs server: test4/test4.c already exists, with version number 1.1
cvs server: test4/Test4.java already exists, with version number 1.1
cvs server: test4/test4.sh already exists, with version number 1.1
cvs server: test5/makefile already exists, with version number 1.1
cvs server: test5/test5.cpp already exists, with version number 1.1
cvs server: test6/index.html already exists, with version number 1.1
cvs server: test6/makefile already exists, with version number 1.1
cvs server: test6/test6.cpp already exists, with version number 1.1
cvs server: test7/makefile already exists, with version number 1.1
cvs server: test7/spider.xml already exists, with version number 1.1
cvs server: test7/test7.cpp already exists, with version number 1.1
cvs server: test8/makefile already exists, with version number 1.1
cvs server: test8/test8.cpp already exists, with version number 1.1
cvs commit: Examining .
cvs commit: Examining test0
cvs commit: Examining test1
cvs commit: Examining test2
cvs commit: Examining test3
cvs commit: Examining test4
cvs commit: Examining test5
cvs commit: Examining test6
cvs commit: Examining test7
cvs commit: Examining test8
[root@rhel55 src]#

lumerical-环形谐振器 利用mode求解器优化得到所需的环的总长度,即环形器的半径,然后通过varFDTD得到光场分布和透过率. 阅读详情

相关推荐

基于smart_rtmp直播,最简单的部署手册

版本号 添加内容 修改时间 V1.0 新建 2021年12月30日 V1.1 增加网页播放 2021年12月31日 V1.2 增加是否可以多流和测试数据 2022年1月5日 目录 一、软件储备 1.推流软件:OBS 2.服务器流媒体软件:smart_rtmp 3.播放软件:Pot...

qq_28768477的博客 1万+

CVSNT增加用户权限管理

                       源自:http://www.shengfang.org/blog/index.php?job=art&articleid=a_20050831_151144bird 问:我使用CVSNT在代码库目录设置了访问权限,某些人只有底层几个目录的读写权限;在客户端用TortoiseCVS得要一个一个的取出,而且取出路径非常复杂,也不能一起更新;不知道你有没

eako的专栏 4113

openMVS ---dense point cloud(代码理解)

openMVS ---dense point cloud(代码理解)0 代码实现原理1 代码实现步骤1.1 参数传递1.2 loading .mvs数据1.3 稠密重建1.3.0 相关变量及概念1.3.1 ComputeDepthMaps(data) --计算多张深度图1.3.1.1. pre1.3.1.2 为每一张depth map Select view(s) !!!1.3.1.2.1 N neighbors --- global score + filter1.3.1.2.2 MRF ---- t

小rivaaaa的博客 5328

csv文件生成及删除目录下的所有文件

import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.ArrayLis

ZZ的博客 3364

【知识点总结】电路原理 第一讲

大家好,从今天起,我将开始更新自上大学以来所学到的各种知识,之所以选择更新它们是因为最近我一直在收拾整理自己自上大学以来所收获到的各种知识,看着那厚厚一沓的书本心里不由得犯愁。如果我想找到特定的知识,那岂不是得翻到猴年马月。俗话说得好,下雨天打鞋子,闲着也是闲着,为此我设置一个专栏,将知识点一一分类总结,目的在于更好的整理所学的知识。本人学艺不精,有一些知识点地方可能存在瑕疵,希望各位大佬可以多多指教。以下是本篇文章正文内容虚断:一般通用性运算放大器的正反向输入端之间的电阻非常非常的大。

weixin_51130221的博客 4万+

CVS中增加目录及标签和分支

1.在cvs中增加目录.如果要在CVS中增加一个目录层,而不是几个文件,有点麻烦,因为增加操作不支持子目录。这种情况下,你要使用输入,就像创建新模块。1) 选择Create->Import module 菜单2) 在弹出的文件对话框中,选择你要增加的目录,并使这个文件夹打开。3) WinCvs 然后试图辨别目录树中的任何二进制文件。如果弹出了筛选窗口,确保提及的文件被正确地设置了文本或二进制。4)

goodfunman的专栏 8168

企业微信——智能表格学习

企业微信报表

qq_15138049的博客 1万+

linux下配置cvs服务器

一 CVS服务器的安装: 1。查看你的操作系统上是否安装了CVS:#> rpm -qa|grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2。建立cvs用户组: #> groupadd cvs 3。建立cvs组的cvsroot用户和所属的目录: #> useradd -g cv

吾欲乘风 5860

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 482

亲测解决This application failed to start because no Qt platform plugin could be initialized.

这个问题是由于环境变量改变或者Qt的路径改变导致,解决办法是在环境变量里面重新添加Qt路径。

狂小虎/Anthony Dave的博客 KuangXiaoHu's Blogs 2919

linux 下建立cvs

1.首先确定是否安装了cvs包[root@love cvstest]#rpm -qa |grep cvslibbonoboui-2.8.0.99cvs20040929-2cvs-1.11.17-5或者 cvs --versionConcurrent Versions System (CVS) 1.11.17 (client/server)Copyright (c) 1989-2004 Bria

加油学习 648

华为OD机试真题 新系统-等距二进制判断(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【等距二进制判断】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【等距二进制判断】

qq_45776114的博客 1085

linux cvs账户,linux cvs 配置

linux cvs 配置1。查看你的操作系统上是否安装了CVS:#> rpm -qa|grep cvs如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。2。建立cvs用户组:#> groupadd cvs3。建立cvs组的cvsroot用户和所属的目录:#> useradd -g cvs -G cv...

weixin_36108913的博客 137

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

cvs update 用法_CVS的使用 | 学步园

CVS简介版本控制系统is a version control system;The Repository 仓库Repository 仓库(服务器端)Working directory工作目录(客户端)是C/S结构的用于UNIX或LINUX平台Creating Repository 创建仓库1.Create repository root directoryfor example:# mkdir ...

weixin_39636333的博客 335

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

linux下cvs的配置

 CVS服务器的安装: 1。查看你的操作系统上是否安装了CVS:#> rpm -qa|grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2。建立cvs用户组: #> groupadd cvs 3。建立cvs组的cvsroot用户和所属的目录: #> useradd -g cvs -G cvs –d

Robin(张小斌)的专栏 1255

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux用cvs提交新文件夹,使用CVS进行项目开发管理

int main(void){printf ("Hello World\n");printf("checkoutwithlock\n");return 0;}ci 之后,然后取出,文件将变成:/*$Id: hello.c,v1.32001/02/22 16:16:58 kerberos Exp kerberos $*/#includeint main (void){printf ("HelloWo...

weixin_32204241的博客 385

linux cvs 配置

1。查看你的操作系统上是否安装了CVS:#> rpm -qa|grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2。建立cvs用户组: #> groupadd cvs 3。建立cvs组的cvsroot用户和所属的目录: #> useradd -g cvs -G cvs –d /

hebji的专栏 2385

CVS for LINUX配置详解

cvs服务器的安装: 1。查看你的操作系统上是否安装了cvs:#> rpm -qa|grep cvs 如果没有安装可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2。建立cvs用户组: #> groupadd cvs 3。建立cvs组的cvsroot用户和所属的目录: #> useradd -g cvs –d /cvsroot cvsroot

东东狗的专栏 432

CVS 多仓库 多权限控制

一 CVS服务器的安装: 1。查看你的操作系统上是否安装了CVS: #> rpm -qa|grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2。建立cvs用户组: #> groupadd cvs 3。建立cvs组的cvsroot用户和所属的目录

分享建筑软件的乐趣 902

关于Linux下的CVS的安装与配置管理

关于Linux下的CVS的安装与配置管理一、CVS服务器的安装: 1、查看你的操作系统上是否安装了CVS:#>; rpm -qa | grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。 2、建立client用户组: #>; groupadd client 3、建立client组的cadmin用户和所

cocojiji5的专栏 1108

Linux下CVS配置

虽然网上有很多关于CVS服务器的配置文档供大家参考,但是本着“纸上得来终觉浅,绝知此事须躬行”的态度,还是自己动手安装一下。因为别人配置的环境和 自己的毕竟不大一样,操作起来可能会有一些步骤有问题。只有我们自己遇到问题并解决时,才能够对CVS服务器的配置理解的更加深入。也建议各位需要用到CVS的朋友也动手装一下,实现你自己的CVS服务器。 闲话少说,转入正题。我用的操作系统是:Fedora 7

月光秦王 342

CVS使用速成配置(转)

CVS使用速成配置(转)By 明明一 CVS服务器的安装: 1。查看你的操作系统上是否安装了CVS:#> rpm -qa|grep cvs 如果没有安装你可以在Redhat 第2张光盘上找到,另外你也可以在网上下载到最新的...

cizn2013的博客 153

linux下CVS服务器搭建

1、CVS服务器的安装       本文将主要基于Redhat Linux 下cvs服务器的安装配置,下载cvs安装软件 cvs-1.12.13.tar.bz2       # rpm -ivh cvs-1.12.13.tar.bz2       # cd  rpm -ivh cvs-1.12.13       # ./configure       # make       # ma

eric_lee的专栏 753

Linux下CVS服务器的安装与配置

 1、CVS服务器的安装   CVS服务器版可以从网上的很多地方下载到,也可以到CVS的官方网站进行下载。根据你所使用的系统,下载相应的版本,然后进行安装。因为当前大部分人是在Linux下使用CVS服务器进行版本管理,并且Redhat Linux是目前最流行的一个Linux发行版之一,所以本文将主要基于Redhat Linux进行介绍。   首先下载CVS服务器的rpm包,当然也可以下载其

XiaoMu_FireAnt的专栏 813
上一篇: 我使用过的Linux命令之unzip - 解压zip文件
下一篇: 我使用过的Linux命令之unrar - 解压rar文件
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值