??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品无码午夜福利理论片,国内精品免费久久影院,久久AV无码精品人妻糸列http://www.shnenglu.com/prayer/category/9142.html在一般中L卓越zh-cnSat, 17 Jul 2010 09:03:48 GMTSat, 17 Jul 2010 09:03:48 GMT60cvs server: sticky tag `xxx?for file ‘xxx?is not a branch?/title><link>http://www.shnenglu.com/prayer/archive/2010/07/16/120526.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Fri, 16 Jul 2010 02:46:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2010/07/16/120526.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/120526.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2010/07/16/120526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/120526.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/120526.html</trackback:ping><description><![CDATA[貌似是cvs的一个经兔R题,今天在修改的时候取了一个历史版本,好像p动给加上了个版本LtagQ然后在commit的时候就出现了这个问题,提示修正后才能commit?br>google一下果然是l典问题Q很快找C{案Q对个错的文件执行update -A后清掉当前的tag可以了 <img src ="http://www.shnenglu.com/prayer/aggbug/120526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2010-07-16 10:46 <a href="http://www.shnenglu.com/prayer/archive/2010/07/16/120526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cvs server: x.xxxx added independently by second partyhttp://www.shnenglu.com/prayer/archive/2010/06/10/117582.htmlPrayerPrayerThu, 10 Jun 2010 11:28:00 GMThttp://www.shnenglu.com/prayer/archive/2010/06/10/117582.htmlhttp://www.shnenglu.com/prayer/comments/117582.htmlhttp://www.shnenglu.com/prayer/archive/2010/06/10/117582.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/117582.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/117582.htmlcvs server: x.xxxx added independently by second party
Warning : 'add_record.php' has some escape characters in it (0x00-0x20, 0x80-0xFF), you should correct it first
cvs add add_record.php (in directory E:\workdir\bedu2\comwinadmin\bedu_service\)
cvs server: add_record.php added independently by second party
 
出现q种错误表示Q在cvs服务器上目录己有x.xxx文gQ但你的本地cvs repository  中没有这个文件?/div>
是跟服务器冲H?/div>
telnet到cvs server Q删除x.xxxOK了。或者整个目录重新更Cơ?/div>


Prayer 2010-06-10 19:28 发表评论
]]>cvs diff陷阱: 几乎Zh会有的误?/title><link>http://www.shnenglu.com/prayer/archive/2009/09/17/96513.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Thu, 17 Sep 2009 04:34:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/09/17/96513.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/96513.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/09/17/96513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/96513.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/96513.html</trackback:ping><description><![CDATA[<div id="koeekkm" class=postText> <p>假设有这样一U情? 在CVS的repository中存储了一个文件file.c, 你在星期一update?br>了该文g的最新版?.1.1.4, 在星期三的时? 你还没动q个文g一Ҏ? ?br>你的同事已经把版本号升C1.1.1.6, 此时你用下面的命令对你本地的file.c<br>q行比较:<br>cvs diff file.c<br>在刚开始接触CVS? 几乎Zh都认为此时的动作是cvs把你本地的文件跟服务器上的最?br>版本q行比较. q期望根据这个命令的输出l果来判断你本地的文件是否是最新版?</p> <p>事实? q个命o执行的是:<br>1. 在你本地保存的CVS理文g?CVS/Entries)扑ֈq个文g对应的版本号是什<br>? 或是哪个旉得到的这个文? q类信息被称为sticky信息, 也就是说q些?br>息跟你的文g本n是如影随形的, CVS考虑你的文g? 同时会考虑最后一ơ取?br>该文件时的条?<br>2. Ҏ前述扑ֈ的sticky信息, 从服务器上下载一份该sticky信息对应的那个版<br>? 在上q的情况? 仍然下蝲的是1.1.1.4版本, 因ؓ我本C存的file.c?br>1.1.1.4版本.<br>3. 用diff工具q行比较</p> <p>q样比较的结果当然是: 没有不同.</p> <p>当然, cvs diff的其它工作方式ƈ不象此处q样隐晦, 比如<br>cvs diff -r1.1.1.4 -r1.1.1.5 file.c<br>明确地比较这两个版本, 两个版本的文件内定w取自服务?</p> <p>错误的信息源于错误的愿望: 不能指望cvs diff filename 来判断你本地的文件是<br>否是最新版? 判断q个的命令应该用<br>cvs status file.c<br>此时它的输出?Needs Patch<br>而接下来把本地文件更新到最新版本的操作当然?br>cvs update file.c<br></p> <br><br> <p id=TBPingURL>Trackback: http://tb.donews.net/TrackBack.aspx?PostId=678715</p> <br></div> <img src ="http://www.shnenglu.com/prayer/aggbug/96513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-09-17 12:34 <a href="http://www.shnenglu.com/prayer/archive/2009/09/17/96513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS分支http://www.shnenglu.com/prayer/archive/2009/05/18/83256.htmlPrayerPrayerMon, 18 May 2009 02:05:00 GMThttp://www.shnenglu.com/prayer/archive/2009/05/18/83256.htmlhttp://www.shnenglu.com/prayer/comments/83256.htmlhttp://www.shnenglu.com/prayer/archive/2009/05/18/83256.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/83256.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/83256.html    CVS中ؓ一个模块创Z个分支用的命o是tag或rtag。这两个命o很相|先用tag命o来做介绍?br>    假设有一个模块foo_wareQ一直在headd支里工作Q但是现在需要徏立一个分支foo_tag用来做测试版本的开发,则方法如下:  
    在foo_ware的一个工作目录下Q执行:
cvs tag foo_tag //把服务器上的当前工作目录下的所有文件增加标记foo_tag
cvs update -r foo_tag //如果要在当前目录的foo_tag分支下l工作,则要把当前目录下的文件状态都更新为foo_tag分支Q这是因为tag命o只ؓ服务器上的文件增加标记foo_tagQ而不改变当前目录下文件的状态?br>    cvs commit //如果当前目录下的文g在做分支之前已经修改q了Q而且又想把这些修改应用于foo_tag分支Q则要commit?/p>

    如果要从服务器上{և另外一个foo_tag分支的副本,则用如下命oQ?br>cvs co -r foo_tag -d new_dir foo_ware //必须要指明要{և的分支是foo_tagQ否则签出的版本q会是headd支?br>    q样{և之后Q不论再update和commitQ都是在foo_tag分支下进行了Q不会更改headd支里的状态?/p>

    tag和rtag的区别在于,rtag不需要有本地副本的存在,可以增加或修改服务器模块上的tagQ而tag必须有一个本地版本做参考,更新服务器上的对应于本地的那些文Ӟ如上例所C?/p>

    如果要把分支版本里的修改合ƈC分支里,Ҏ如下Q?
    在分之版本的本地副本做好commit之后Q在d支的本地副本下,执行:
cvs update -j foo_tag //把foo_tag分支的修改合q到本地的主版本?br>... do some revision
cvs commit //把合q后的版本更新到服务器的ȝ本上Q因Z前的update -j命oq不影响服务器上的主版本?/p>

Prayer 2009-05-18 10:05 发表评论
]]>
CVS的常用命令速查手册http://www.shnenglu.com/prayer/archive/2009/05/14/82951.htmlPrayerPrayerThu, 14 May 2009 06:33:00 GMThttp://www.shnenglu.com/prayer/archive/2009/05/14/82951.htmlhttp://www.shnenglu.com/prayer/comments/82951.htmlhttp://www.shnenglu.com/prayer/archive/2009/05/14/82951.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/82951.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/82951.html
CVS的常用命令速查手册

转蝲说明 此{载基于原作者最后更C2002-06-15 23:18:05的版本。原作可以在q里扑ֈQ本文的版权归原作者所有。本文作者原为网易公司的资深开发h员?/font>

版权声明 可以L转蝲Q{载时请务必标?/font>原始出处和作者信?br>

概述QCVS是一个C/SpȝQ多个开发h员通过一个中心版本控制系l来记录文g版本Q从而达C证文件同步的目的?

       CVS服务器(文g版本库)
     /     |       \
Q版 ??步)
   /       |         \  
开发?  开发?   开发?

以下是本文主要内容:开发h员可以主要挑?, 6看就可以了,CVS的管理员则更需要懂的更多一?/font>

标题 内容?/font> 读者对?/font>
CVS环境初始?/font> CVS环境的搭?/font> 理?/font>
CVS的日怋?/font> 日常开发中最常用的CVS命o 开发h员、管理员
CVS的分支开?/font> 目按照不同q度和目标ƈ发进?/font> 理?/font>
CVS的用戯?/font> 通过SSH的远E用戯证,安全Q简?/font> 理?/font>
CVSWEB CVS的WEB讉K界面大大提高代码版本比较的效?/font> 理?/font>
CVS TAG ?Id$加入代码注释中,方便开发过E的跟踪 开发h?/font>

一个系l?0%的功能往往能够满80%的需求,CVS也不例外Q以下是CVS最常用的功能,可能用到的还不到它全部命令选项?0%Q更多的功能请在实际应用q程中体会,学习q程中应该是用多,学多,用到了再学也不迟?/font>

CVS环境初始?br>============

环境讄Q指定CVS库的路径CVSROOT

tcsh
setenv CVSROOT /path/to/cvsroot
bash
CVSROOT=/path/to/cvsroot ; export CVSROOT

后面q提到远ECVS服务器的讄Q?/font>

CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

初始化:中心库版本库的初始化Q其实就是一个目?/font>

cvs init

目首次导入

cvs import -m "write some comments here" project_name vender_tag r_tag

目导出Q将代码从CVS库里导出

cvs checkout project_name

CVS的日怋?/font>  
=============

认修改Q确认自q修改q写入到CVS库里

cvs commit -m "write some comments here" file_name

注意QCVS的很多动作都是通过cvs commitq行最后确认ƈ修改的,在确认的前,q需要用户填写修Ҏ释,以帮助其他开发h员了解修改的原因。如果不用写-m "comments"而直接确认`cvs commit file_name` 的话Qcvs会自动调用系l缺省的文字~辑?一般是vi)要求你写入注释?br>注释的质量很重要Q所以不仅必要写,而且必须写一些比较有意义的内容:以方便其他开发h员能够很好的理解。不好的注释Q很难让其他的开发h员快速的理解Q比如: -m "bug fixed" 甚至 -m ""。好的注释,甚至可以用中? -m "在用h册过E中加入了Email地址校验"

同步最q修改:开始工作前和将自己的工作导入到CVS库里前都要做一ơ:先同?后修?/font>

cvs update -m "write some comments here" file_name

注意Q不要用项目首ơ导出后Q以后就要用cvs update在导出的目目录下进行同步了Q而不是每ơ重新cvs checkout来同步文件了。如果导出后修改了文Ӟ然后再次从导出的目目录的上一Ucvs checkout proj{于是删除了proj目录然后重新导出Q上ơ导出后的修改就全丢了?/font>

修改某个版本注释Q每ơ只认一个文件到CVS库里是一个很好的习惯Q但隑օ有时候忘了指定文件名Q把多个文g以同h释commit到CVS库里了,以下命o可以允许你修Ҏ个文件某个版本的注释Q?/font>

cvs admin -m 1.3:"write some comments here" file_name

删除文gQ?br>文g删除后,比如Q?/font>

rm file_name
cvs rm file_name
cvs ci -m "write some comments here"

以上面前2步合q的Ҏ为:

cvs rm -f file_name
cvs ci -m "why delete file"

注意Q很多cvs命o都有~写形式Qcommit=>ci; update=>up; checkout=>co; remove=>rm;

d文g 文gd后,比如Q?/font>

touch new_file
cvs add new_file
cvs ci -m "write some comments here"

d目录Q?/font>

cvs add dir_name

查看修改历史Q?/font>

cvs log file_name
cvs history file_name

查看当前文g不同版本的区?/font>

cvs diff -r1.3 -r1.5 file_name

查看当前文gQ可能已l修改了Q和库中相应文g的区?/font>

cvs diff file_name

cvs的web界面提供了更方便的定位文件修改和比较版本区别的方法,具体安装讄L后面的cvsweb使用

正确的通过CVS恢复旧版本的ҎQ?br>如果?/font>

cvs update -r1.2 file.name

q个命o是给file.name加一个STICK TAGQ?"1.2" Q虽然你的本意只是想它恢复?.2版本
正确的恢复版本的Ҏ?/font>

cvs update -p -r1.2 file_name >file_name

如果不小心已l加成STICK TAG的话Q用cvs update -A 解决

Ud文gQ文仉命名
cvs里没有cvs move或cvs renameQ因两个操作是先cvs remove old_file_nameQ然后cvs add new_file_name实现的?/font>

删除Q移动目录:
最方便的方法是让管理员直接UdQ删除CVSROOT里相应目录(因ؓCVS一个项目下的子目录都是独立的,Ud?CVSROOT目录下都可以作ؓ新的独立目Q好比一颗树Q其实砍下Q意一枝都能独立存z)Q对目录q行了修改后Q要求其开发h员重新导出项目cvs checkout project_name 或者用cvs update -dP同步?/font>

CVS BranchQ项目多分支同步开?br>=============================

认版本里程:多个文g各自版本号不一P目C定阶D,可以l所有文件统一指定一个阶D里E碑版本P方便以后按照q个阶段里程版本号导出目Q同时也是项目的多个分支开发的基础?/font>

cvs tag release_1_0

开始一个新的里E碑Q?/font>

cvs commit -r 2

标记所有文件开始进?.x的开?/font>

注意QCVS里的revsion和Y件包的发布版本可以没有直接的关系。但所有文件用和发布版本一致的版本h较有助于l护?/font>

在开发项目的2.x版本的时候发?.x有问题,?.x又不敢用Q则从先前标记的里程:release_1_0导出一个分支release_1_0_patch

cvs rtag -b -r release_1_0 release_1_0_patch proj_dir

一些h先在另外一个目录下导出release_1_0_patchq个分支Q解?.0中的紧急问题,

cvs checkout -r release_1_0_patch

而其他h员仍旧在目的主q分?.x上开?/font>

在release_1_0_patch上修正错误后Q标C?.0的错误修正版本号

cvs tag release_1_0_patch_1

如果2.0认ؓq些错误修改?.0里也需要,也可以在2.0的开发目录下合ƈrelease_1_0_patch_1中的修改到当前代码中Q?/font>

cvs update -j release_1_0_patch_1

CVS的远E认证:通过SSHq程讉KCVS
================================

使用cvs本n的远E认证很ȝ,需要定义服务器和用LQ用户名Q设|密码等Q而且不安全,因此和系l本地帐可证ƈ通过SSH传输是比较好的办法,通过在客h?etc/profile里设|一下内容:

CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

所有客h所有本地用户都可以映射到CVS服务器相应同名帐号了?/font>

如果CVS所在服务器的SSH端口不在~省?2Q或者和客户端与CVS服务器端SSH~省端口不一_有时候设|了Q?/font>

:ext:$USER@test.server.address#port:/path/to/cvsroot

仍然不行Q比如有以下错误信息Q?/font>

ssh: test.server.address#port: Name or service not known
cvs [checkout aborted]: end of file from server (consult above messages if any)

解决的方法是做一个脚本指定端口{向(不能使用aliasQ会出找不到文g错误Q:
创徏一?usr/bin/ssh_cvs文gQ?/font>

#!/usr/bin/sh
/path/to/ssh -p 34567 "$@"

然后Qchmod +x /usr/bin/ssh_cvs
qCVS_RSH=ssh_cvs; export CVS_RSH

注意Qport是指相应服务器SSH的端口,不是cvs pserver的端?/font>

CVSWEBQ提高程序员比较文g修改效率
================================

CVSWEB是CVS的WEB界面Q可以大大提高程序员定位修改的效?
使用的样例可以看Q?/font>http://www.freebsd.org/cgi/cvsweb.cgi

CVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,q个是个人感觉觉得安装设|比较方便的Q?/font>http://www.spaghetti-code.de/software/linux/cvsweb/

下蝲解包Q?/font>

tar zxf cvsweb.tgz

把配|文件cvsweb.conf攑ֈ安全的地方(比如和apache的配|放在同一个目录下Q,
修改Qcvsweb.cgi让CGI扑ֈ配置文gQ?/font>

$config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';

转到/path/to/apache/conf下ƈ修改cvsweb.confQ?/font>

  1. 修改CVSROOT路径讄Q?br>%CVSROOT = (
    'Development' => '/path/to/cvsroot', #<==修改指向本地的CVSROOT
    );
  2. ~省不显C已l删除的文档Q?br>"hideattic" => "1",#<==~省不显C已l删除的文档
  3. 在配|文件cvsweb.conf中还可以定制头的描qC息,你可以修?long_intro成你需要的文字

CVSWEB可不能随便开攄所有用P因此需要用WEB用户认证Q?br>先生?passwd:

/path/to/apache/bin/htpasswd -c cvsweb.passwd user

修改httpd.conf: 增加

<Directory "/path/to/apache/cgi-bin/cvsweb/">
AuthName "CVS Authorization"
AuthType Basic
AuthUserFile /path/to/cvsweb.passwd
require valid-user
</Directory>

CVS TAGS: who? when?
====================

?Id$ 加在E序文g开头的注释里是一个很好的习惯Qcvs能够自动更新其中的内ҎQfile_name version time user_name 的格式,比如Qcvs_card.txt,v 1.1 2002/04/05 04:24:12 chedong ExpQ可以这些信息了解文件的最后修改h和修Ҏ?/font>

几个常用的缺省文Ӟ
default.php

<?php
/*
* Copyright (c) 2002 Company Name.
* $Id$
*/

?>

Default.java: 注意文g头一般注释用 /* 开?JAVADOC注释?/** 开始的区别

/*
* Copyright (c) 2002 Company Name.
* $Id$
*/

package com.netease;

import java.io;

/**
* comments here
*/
public class Default {
    /**
    *
    * @param
    * @return
    */
    public toString() {

    }
}

default.pl:

#!/usr/bin/perl -w
# Copyright (c) 2002 Company Name.
# $Id$

# file comments here

use strict;

相关资源Q?/font>

CVS HOMEQ?br>http://www.cvshome.org/

CVS FAQQ?br>http://www.loria.fr/~molli/cvs-index.html

相关|站:
Google: CVS

CVS 免费?
http://cvsbook.red-bean.com/

CVS 命o的速查卡片Q?br>http://www.refcards.com/about/cvs.html

了解更多详情Q参与讨论,误?strong>GBUNIX论坛Q?br>
http://www.gbunix.com/bbs/index.php

Prayer 2009-05-14 14:33 发表评论
]]>
在commit之前恢复CVS removehttp://www.shnenglu.com/prayer/archive/2009/05/14/82949.htmlPrayerPrayerThu, 14 May 2009 06:29:00 GMThttp://www.shnenglu.com/prayer/archive/2009/05/14/82949.htmlhttp://www.shnenglu.com/prayer/comments/82949.htmlhttp://www.shnenglu.com/prayer/archive/2009/05/14/82949.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/82949.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/82949.html如果x复cvs removeq的文g(在commit之前)Q只要进行简单的cvs add好了?/p>

重新考入该文Ӟ然后cvs add是不好用的,会得?#8221;should be removed and is still there (or is back again)”的错误信息?br>
cvs remove test.java (删除test.java)
cvs add test.java (不要试图加入一个新的test.java文gQadd会找回之前删除的文g。如果想更新原来的test.javaQ在add之后Q考入新的test.java)



Prayer 2009-05-14 14:29 发表评论
]]>
CVSȝ(使用)http://www.shnenglu.com/prayer/archive/2009/02/09/73286.htmlPrayerPrayerMon, 09 Feb 2009 04:11:00 GMThttp://www.shnenglu.com/prayer/archive/2009/02/09/73286.htmlhttp://www.shnenglu.com/prayer/comments/73286.htmlhttp://www.shnenglu.com/prayer/archive/2009/02/09/73286.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/73286.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/73286.htmlcvs基本命o

checkout  (co)

cvs checkout java_test

diff

查看差异

cvs diff test.c

cvs diff -c test.c

用编辑器查看

Admin-?/span>Preferences-?/span>wincvs

commit

提交

Log 

查看日志

版本回退

Ҏ1

cvs (-Q) update -p -r 1.2 test.c > test.c

Ҏ2

cvs update -j 1.3 –j 1.2 test.c

//cvs up –A test.c

模块讑֮

CVSROOT文g夹下?/span>module文g上写?/span>

代号       路径

如:acctmgmt     project/acctmgmt

排除目录

如:acctmgmt      !project/acctmgmt/doc project/acctmgmt

聚合多个目录

如:linux_kernel –a init mm

                     1  2

版本标签

单个文g

cvs tag REL_1_0_1 test.c

所有文?/span>

cvs tag BASELINE_1

删除标签

Cvs tag –d BASELINE_1

修改标签?/span>

先脓上新标签

Cvs tag –r BASELINE_1 BASELINE_2

然后删除旧标{֐

Cvs tag –d BASELINE_1

标签的查?/span>

Cvs status –v test.c

按日期脓标签

Cvs rtag –D 20011010 REL_1_0_1 test

如果要取回老版本ƈq行修改Q然后提交Ş成新版本的需求,有三U方法:

1?/span>

Cvs update –p –D “2001-05-08” test.c > test.c

2,

首先取消所有附着性标{、版本号、日期等

Cvs update –A

在一个时目录下导出代码

Cvs export –D “2001-05-08” test

所有代码拷贝到原有目录下覆盖所有原有文?/span>

Cp –r test /home/src/test

3?/span>

cvs update -j 1.3 –j 1.2 test

版本分支

分支创徏之后Q分支标{是与分支树的头部版本关联的Q而不是与分支基点兌的。如果需要蝲今后讉K分支基点Q需要在创徏分支的时候,同时l主q代码树贴上一个便于识别的标签?/span>

1、在工作拯中创建分?/span>

Cvs co –r BASELINE_1 test

Cvs tag –b BASELINE_1_PATCH test

2、直接在仓库中创建分?/span>

Cvs rtag –b –r BASELINE_1 BASELINE_1_PATCH



Prayer 2009-02-09 12:11 发表评论
]]>
关于二进制文件的问题 cvs diffhttp://www.shnenglu.com/prayer/archive/2008/12/17/69645.htmlPrayerPrayerWed, 17 Dec 2008 04:47:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/17/69645.htmlhttp://www.shnenglu.com/prayer/comments/69645.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/17/69645.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/69645.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/69645.html什么时候需要对二进制文件进行管理是很明昄Q你通常使用的是二进制文Ӟ把它们放到版本控制时Q要注意的一些额外的问题?

版本控制的一个基本功能是昄两个修订版之间的差异。例如,如果某h入了一个文件的新版本, 也许你想看看q个版本有什么变化ƈ想确定这些改变的好坏。对于文本文?cvs 是通过 cvs diff 命o来提供该功能。对于二q制文gQ一U可能的做法是:首先抽取q两的修订版本,然后使用 cvs 外部工具Q例如,字处理Y仉常都具有这L功能Q来比较它们。如果没有这L工具Q那么必通过其他的机制来跟踪改变Q例如督促h们认真记录日志信息,q希望他们实际所作的改动是他们惌改的?

版本控制pȝ的另一个功能是合ƈ两个修订版。对?cvsQ两U环境下发生q种情况。一是用h作的改变是在不同的工作目录下(参阅 Multiple developers)。第二是是某人用 `update -j' 命o昑ּ合ƈ?参阅 Branching and merging)?

对于文本文gQ?span class=sc>cvs 可以独立地合qӞ如果有冲H还可以l出冲突信号。而对于二q制文gQ?span class=sc>cvs 的最好做法是提供两个文g的不同副本,让用戯p军_H。用户可以Q选其中一个副本,或者通过能处理该格式文g的合q工h解决q个问题。注意,让用戯军_qӞ主要靠用户不会偶然忽略一些改变,因此会有潜在的错误发生?

如果不喜Ƣ上q处理方式的话,最好的解决办法是避免合q。如何避免由于不同的工作目录引v的合qӞ参见 Multiple developers 里关于保留的出方法(文g加锁Q的讨论。ؓ了避免由于分支引L合ƈQ还要限制用分支?



Prayer 2008-12-17 12:47 发表评论
]]>
˼˼þ99ѾƷ6| AVþþþò| 91鶹Ʒ91þþþþ| 99þù¶Ʒ| 91Ʒ91þþþþ| ۺϾþþ| þˬƬţţ| þþþAV鶹| Ʒһþ| 99þþƷѿһ | þþþùƷ۲ӰԺ| þþþþþòҰ¸߳| ŷ츾BBBþþ| þþƷƷƾ| Ʒþþþþþapp| ŷþһ| þþƷ99Ʒ| 2019þþø456| ޾ҹþþþþ| Ʒþһ| ɫݺȷӰþ| þ޴ɫĻþþ | Ʒþþþþþþ| þþþۺϹŷһ| ɫþþۺƷ | ŷ㽶þۺվ| ɫþˬˬƬAV| ƷþþƷ| þ99ƷСѼ | Ʒ˾Ʒþþ| vaþþþúݺ| ùƷӰ˾þ| þùֱ| þseƷһӰԺ| þ㽶߿ۿ99| þ99Ʒ鶹լլ| þþƷAV| yy6080þ| þþþó˾ƷĻ | þþƷAVɫ | þþûɫƬ|