zoukankan      html  css  js  c++  java
  • svn开发常用整理

    1.删除tortoise svn中的账号信息

    其实tortoise svn也是将账号信息存放在本地的配置文件中

    在不同的操作系统下,操作基本类似,首先我们来看一下windows下如何操作的。

     

    以win7为例

    1、进入c:/Users/[你的用户名]/AppData/Roaming/Subversion/auth目录,删除该目录下的所有文件;

    2、重启eclipse/myeclipse,提交svn的文件就会提示输入用户名和密码了。

     

    XP:

    1.C:Documents and SettingsWangTaoApplication DataSubversionauth,删除下面所有文件夹,

    或者用ultraedit打开svn.simple中的文件,把用户名改了,密码是加密过的,没法改,再提交会提示密码错误,重新输入密码就行了

    2. 在eclipse中刷新 svn repo

     

    以mac os x为例(Unix/Linux类似),

     

    1、打开命令行窗口,即用户的根目录(用户的home目录)

     

    $ ls -al

    ...

     

    drwxr-xr-x   6 linxyz  staff    204  2 15 15:55 .subversion

    ...
    $cd . subversion/auth/
    $rm -r -f -d *
    2、重启eclipse/myeclipse,提交或者更新svn文件,就会提示输入用户名和密码了。



    关于eclipse中如何删除svn账号
    1. 查看你的Eclipse中使用的是什么SVN Interface
    windows > preference > Team > SVN #SVN Interface

    2. 如果是用的JavaHL, 找到以下目录并删除auth目录.
    C:Documents and Settings[YourUserName]Application DataSubversion

    3. 如果你用的SVNKit, 找到以下目录并删除.keyring文件.
    [eclipse]configurationorg.eclipse.core.runtime
    eclipse也是依赖本地的svn配置文件

     2.三种合并方式

     合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。

    一、合并一个范围的版本(Merge a range of versions)

           此类型应用最为广泛,主要是把分支中的修改合并到主干上来。在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本。合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只是选择其中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或之后的修改将不被采纳。

    二、复兴合并(Reintegrate a branch)

           复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理解为是自从开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支是没有版本选择的。经过复兴合并,分支中所有的修改都会合并到主干中,合并的结果将使得分支和主干一模一样,从而可以删除分支。

    三、合并两个不同的树(Merge two different tress)

           此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择版本;第二种类型是主干和分支都不能选择合并的版本;而这种类型则是无论是主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被放弃。

    起始URL:选择主干目录的URL(应当和当前工作副本的URL一致,这个是所谓的合并点)

    结束URL:选择要合并的分支的URL

    起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点



    3.eclipse合并分支的五种情况

      
    Merge a range of revisions从主干合并到分支
    Reintegrate a branch从分支合并到主干
    Change-set based merge将主干上的修改合并到分支,需要Collabnet软件
    Merge two different trees合并2个分支到主干
    Manually record merge information 从主干到分支,手工指定不需要合并的修改
    Manually remove merge information从主干到分支,手工指定要合并的修改


     ** Best Practices可能出现异常信息

    (1)Working copy at a single revision
    点击update更新

    (2)No uncommitted modifications
    Working copy should not have any local modifications
    Commit or revert any local changes before merging

    有两种选项
    1. 分支修改的内容需要先提交,选择Commit
    2. 忽略本地修改,获取服务器最新版本,选择revert

    4.解决冲突有三种选择

     

    A、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)

     

    B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件右键解决)

     

    C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。


    5.增加ignore方式

    .  方法一

    在 Eclipse 中点击菜单 window --> Preferences --> Team --> Ignored Resources

    点击 Add Pattern… 按钮添加你要忽略的文件或目录。

    2.  方法二

    在Eclipse的导航视图中,选中尚未加入版本控制的文件或目录,右键 --> Team --> 添加至SVN:ignore


    3.  方法三

    在资源管理器中,右键一个未加入版本控制文件或目录,并从弹出菜单选择TortoiseSVN →Add to Ignore List,会出现一个子菜单,允许你仅选择该文件或者所有具有相同后缀的文件。

    如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN →从忽略列表删除。

    4.  方法四

    另一个忽略文件的方法是添加这些文件到globalignore list .他们最大的不同是全局忽略列表是一个客户端特性。它会作用到所有的(all)subversion 项目。但只能在pc客户端使用。

    Subversion 的忽略模式使用了文件匹配,一种原先在Unix系统中使用meta字符作为通配符的技术。下面的字符有着特殊的意思:

    •  * 匹配任何字符串,包括空串(没有字符)
    •  ? 匹配任何单字符
    •  [...] 匹配任何单在方括号[]内的单字符,在方括号内,一对字符被“-”分隔,匹配任何词汇表(lexically)上在他们中间的字符。例如[AGm-p]匹配任何单个的A,G,m,n,o或者p。

    模式匹配是大小写敏感的,这在Windows 平台下会出问题。你可以使用成对的字符来强制忽略大小写。例如,忽略不记 *.tmp 的大小写,那么你可以使用像 *.[Tt][Mm][Pp] 这样的模式。

    如果你想要一个官方定义的匹配规则。你可以在关于shell命令行语言的IEEE规范PatternMatching Notation中找到。


    6.branch/tag/truck/

    根据svn的官方约定,branch用来做分支,进行开发,而tag则是用来保存有里程碑的发布,truck则是主干,有且只有一个

    6.1 不用特意去细分tag和branch区别

    6.2 如何创建一个远程目录,本地新建一个branches,然后右键,svn-->import即可

    6.3 官方文档

    6.4 一款好用的SVN可视化工具 RapidSvn

    7.svn中的replace

    SVN中邪恶的replace

    (转载请注明来源于金庆的专栏)

    用TSVN客户端删除一个文件, 然后再新建一个同名文件, 
    可以看到该文件上的图标被打上了TSVN的小红叉.
    然后Add, Commit, 就会出现一条replace记录.
    replace的操作会有个提示, 就是Add(as replacement)...命令项与普通的Add不同.

    意思应该是该文件被替换了.

    邪恶之处是以前的更改日志显示不出来了.
    用revision graph可以看到所有历史, 只是在replace处是断裂的.
    也就是说替换的效果是重新开启一个文件的更改记录, 隐藏之前的记录.
    我想不出什么情况下需要这种功能.

    更邪恶的是, revert changes from this revision会失败(TSVN 1.4.3).
    错误原因是该文件的上个版本不存在.
    好像所有的Add操作都是无法revert, 应该算是个缺陷吧?

    为了还原该替换,须删除该文件, 然后revert changes from this revision.


    8.svn tree conflict处理
    合并,并标记为已解决

    Eclipse中的解决办法

    右击工程目录–>team–>Show Tree Conflict–>在Eclpise中会出现一个Tab视图显示Tree Conflict的内容,一个一个选择列表中的冲突右击将其标志为已解决,然后回到项目再提交更改就可以了。

     

    看了这个解决办法我才想起了,我在以前曾经提交过org的包,不过后面又删除了那个org包.

    虽然删除了看来还有残余信息遗留在工程里面

     





     





  • 相关阅读:
    HDU3068 最长回文
    本周最后一天——4.18
    一周又结束了——4.14
    一本通1591:数字计数
    一本通1589:不要 62
    一本通1588:数字游戏
    洛谷P2657 [SCOI2009] windy 数
    一本通1587: 【例 3】Windy 数
    一本通1586:【 例 2】数字游戏
    安卓自动化测试(一)
  • 原文地址:https://www.cnblogs.com/draem0507/p/4415546.html
Copyright © 2011-2022 走看看