如何使svn update命令自动用服务器上的版本替换本地同名的但尚未加入版本控制的文件

如何使svn update命令自动用服务器上的版本替换本地同名的但尚未加入版本控制的文件,第1张

这个技术上好像很难实现,我原本想用钩子实现,但发现svn的钩子里没有pre-update的钩子

或者可以换个思路,为什么一定要自动覆盖呢?这是一种存在风险的操作啊,如果本地新建的文件是含有有效工作成果的,将导致这些工作成果的丢失。我们是否可以从操作流程的角度来改进呢?正常的操作就应该是:更新--更新失败--解决冲突--重新更新(或提交)

进入settings查看查看icon overlays中的status cache查看选项是否选的shell ,如果不是,那就更改咯!

开始输入cmd,再输入regedit,调出注册表信息,按下Ctrl+F,在注册表里搜索“ShellIconOverlayIdentifiers”

重命名为前面加几个空格即可,目的是将其排序挪到前面,不让其他程序干扰svn图标的显示

update

重启电脑

号外:

加一个svn cleanup的解释

SVN 本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消。可能会造成本地文件被锁定的情况。

一般出现这种情况的解决方法:

1、可以使用SVN clean up来清除锁定。

2、如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除。

3如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录重新CHECKOUT。但有时有时SVN目录下可能有一些自己本地修改的文件,还未提交到SVN服务器,这时重新CHECKOUT需要注意本地文件的备份,并且不要强制覆盖服务器上其它人修改的内容。

4如果觉得第3种很麻烦,可以考虑这样的方法。其实SVN加锁会在SVN(隐藏文件)中生成一个名字叫lock的文件(无后缀),查找所有的,手工删除。然后再尝试更新,系统可能会提示某个base文件无法访问。找到它,把相关的文件或其所在的目录删除,重新UPDATE。工作量就小多了。

再带上一个svn安装指南

http://wwwcnblogscom/lidabo/archive/2011/08/12/2136063html

  在使用TortoiseSVN这个免费开源客户端的的过程中,用户常常会遇到很多使用问题,比如说,不少TortoiseSVN用户都会咨询与TortoiseSVN覆盖图标相关的问题,比如说:为什么没有覆盖图标,为什么图标只在本地磁盘上显示等,那么,跟随我一起了解一下吧。

 TortoiseSVN覆盖图标相关问题与解决方法:

 为什么没有覆盖图标?

 你是否在安装之后重启电脑?你竟然现在都还没重启。TortoiseSVN是windows资源管理器的Shell扩展,他将会和资源管理器一起启动。

 去TSVN的设置界面然后至少要激活图标覆盖的修改驱动功能,安装程序会自动为当前用户激活图标覆盖功能(不会自动为其他用户激活……)但是由于你不是通过安装用户来使用TSVN,所以你需要手工激活图标覆盖功能。

 不是所有的图标都被覆盖!

 你或许会发现在你的系统上不是所有的图标都被使用,这是因为Windows只允许最多15个图标被覆盖。Windows使用了其中4个,剩下的11则被其他的应用程序所使用。如果你同事在使用TortoiseCVS,那么就不会有足够的位置,那么TortoiseSVN设法做一个“好公民(TM)”?限制了图标的使用把更多的机会留给其他的应用。

 一般来说,修改和冲突总是被加载和可看见的。

 如果可能,删除会被加载,但如果没有足够的位置会使用修改状态。

 如果可能,只读会被加载,但如果没有足够的位置会使用一般状态。

 只有少于加载13个图标覆盖,锁定才会被加载。否则会使用一般状态。

 只有少于加载14个图标覆盖,添加才会被加载。否则会使用修改状态

 为什么图标只在本地磁盘上显示,而不能在网络磁盘上显示?

 GototheSettings-》LookandFeel-》IconOverlays为你想看到的覆盖图标检查驱动器类型。要注意到,使用图标覆盖会使整个系统都慢下来,不仅仅是TortoiseSVN。

 为什么图标覆盖会在SUBSTed驱动器上被弄乱?

 如果你的工作拷贝在SUBST驱动器上,图标可能会被弄乱。

 出现这个错误是因为缓存会设法在同一时间在两个不同位置读取状态。但是这些位置事实上却是相同的,所以在同一时间的相同工作拷贝读取了两个状态。

 有一个简单的办法解决这一问题:只需要在显示覆盖图标的位置排除掉原始目录(settings-》iconoverlays-》excludepaths)。

 比如说,如果你映射\stationfolderwc到g:,将位置“\stationfolderwc”加入到排除模式中。

 为什么图标覆盖显示错误状态?

 有些时候你发现图标覆盖并不能反映文件或者文件夹的正确状态。通常,敲F5就可以使图标回到正确的状态(你可能需要等上几秒,直到缓存重新找到正确的状态)。

 资源管理器左边的树状图完全是另外一回事。它不会更新图标,不管你敲多少次F5。这是因为资源管理器并不能让TortoiseSVN访问。

 一个简单的说明:树状图的显示始终来自于整个资源管理器,包括网路驱动器和其他的命名空间的扩展,由于这些会非常缓慢(比如一个慢的网络驱动器),资源管理器不能一直请求图标覆盖更新图标,即使你告诉资源管理器文件夹已经修改,应该依照图标覆盖来更新图标,它仍然不会工作。首先检查文件夹是否真的已经修改,如果资源管理器认为文件夹真的已经修改,才会更新这些图标。

 现在,由于文件夹的Subversion状态和它自身状态没有关系,文件夹自身并没有被真正的修改(修改的是一些在svn文件夹里的文件),因此资源管理器并不能更新图标。

 这里有一些让资源管理器甚至是资源管理器左侧的文件树刷新图标的小技巧和应急方案,但这些技巧和应急方案显然不能实施可可都工作。

 一个通常使用的小技巧,但是它很慢,TortoiseSVN也不能立刻使用,它将使得整个系统缓慢许多。但是你可以通过工作拷贝管理员账号使用‘cleanup’命令手动激活。当清除命令执行完成以后,你不得不等待几秒让目录树更新这些图标。

 为什么图标覆盖有时会变成一个随机图案?

 Windows图标缓存有很多bug。可以使用下面的方法解决这个问题:

 安装Microsoft的TweakUI通过选项来重新创建图标。

 或者增加图标缓存。到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer增加一个新的字符串MaxCachedIcons。他的默认值为500-尝试增加到2048(见微软知识库的Q132668)。

 或者在Windows目录下删除ShellIconCache文件,然后重启计算机。

 TortoiseSVN130以后的版本,你可以在命令行调用TortoiseProc重建图标缓存,TortoiseProcexe/command:rebuildiconcache

  更新:把他人上传的代码更新到本地环境,你在这个环境下把自己的代码合并到这个版本中。

  提交:将合并好的版本提交到svn,他人再根据你提交的版本开发,保证代码不会冲突。

  值得注意的是,使用SVN的目的是多人共享一个最新的目录,你在提交的时候最好先更新,更新到最新版本的核对之后再提交。

  因为如果你不更新直接提交,这段时间有可能他人更新后已经提交了,你没有更新还是老得版本,直接提交后会把他人更新的覆盖掉。

1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories

2、SVN checkout到本地后,删除本地file,对服务器有影响吗

不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。

3、连接服务器

点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。

4、Xcode4下,SVN中常用命令

Commit 提交

checkout 将服务器上下载到本地(我个正在使用的电脑)

update 更新文件

File------->SourceController------->update

中第3个按钮,是视图对比按钮

5、SVN中用法详解和注意事项

①提交自己的代码

SVN更新的原则是要及时更新,及时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,尽量早的提交,这样也保存了历史版本,必要时候可以回滚;在开始一天的工作之前,最后update一下项目。

②保持原子提交(不要不经意间修改并提交了别人的文件)

仅提交你修改的部分,最好不要一下子将整个项目提交;

当完成一个功能或文件后,最好提交。我就遇到完成某个功能后,没有提交,后来又做了更改,结果代码出现bug,无法恢复到正常时的代码。

③不要提交自动生成的文件

VisualStudio等开发工具在生成过程中会产生很多自动文件,如suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要从仓库中删除。

④不要提交不能通过编译的代码

代码在提交之前,首先要确认自己能够在本地编译。进行SVN提交更新时最好是代码在提交前已经通过自己的测试。

SVN中常用命令详解

1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)

例如:svn checkout svn://19216811/pro/domain

2、往版本库中添加新的文件

svn add file

例如:svn add testphp(添加testphp)

3、删除文件

svn delete path -m “delete test fle“

例如:svn delete svn://19216811/pro/domain/testphp -m “delete testfile”

4、查看日志

svn log path

5、比较差异

svn diff path(将修改的文件与基础版本比较)

6、将两个版本之间的差异合并到当前文件

svn merge -r m:n path

SVN使用方法

更新(update),经常地update没有坏处,特别是多人项目中。如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。

提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。

将文件checkout到本地目录

svn checkout path(path是服务器上的目录)

svn update命令自动用服务器上的版本替换本地版本控制的文件

6、Xcode中使用SVN问题以及提交解决冲突问题

Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。

我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。

但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即projectpbxproj文件的提交冲突问题。

projectpbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在projectpbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新projectpbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。

如果项目成员提交了新的projectpbxproj文件,你这边没有在项目中增加新的文件,直接svn update就可以了。

7、Xcode中更新代码后项目文件打不开

若选择更新整个项目经常会出现冲突问题,尤其是projectpbxproj文件。此文件包含了构建过程所需的所有文件,如果在项目目录下增加了新文件,但没有通过Xcode,

该文件就不在projectpbxproj文件中,就不会生成到app中。同理,如果从SVN中更新到其他项目成员增加的文件,

而没有更新projectpbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。这一文件冲突将直接导致项目文件打不开。

解决更新代码后打不开项目文件方法:

当项目文件如tobaccoxcodeproj打不开时可以右键选择'显示包内容',会看到有三个文件,projectpbxproj/usermodelv3/userpbxuser。

其中projectpbxproj有三个版本,和解决普通svn文件冲突一样解决冲突即可。

8、SVN 更新 提交 合并 区别

当本地文件没有改动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件

当本地文件有改动,服务器文件没改动的话,不会更新此文件

当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,会提示文件冲突,需要自己手动修改以后上传到服务器。

最后一个讲解合并:

服务器和本地的同一个文件(所谓同一个文件应该就是SVN相对路径相同,文件名相同的文件,这个由SVN留在本地的信息决定)已经修改,且修改的部分不重合,不重叠

当满足上面的条件的时候再更新,SVN就会自动合并

SVN的奥妙之处就在于别人提交了修改后的文件,你再提交你的话,他是不允许你提交滴。。。

>>>>

<<<

里面标记的是冲突的区域,把冲突区域删除掉为什么还不能提交

解决办法1:

删掉的话还是没有解决冲突,文件后面还会有几个文件名相同,但是后缀不同的文件

如果你不知道用SVN解决冲突的话,最简单的办法是这样的

把这个文件改名字,然后在文件所在目录更新,这样就会把服务器文件下下来,然后把自己修改的部分添加到更新的文件里面,这样就可以提交了

解决办法2:

在文件上面点击右键,到SVN的菜单,应该有编辑冲突的按钮,选择就会出现一个窗口,一边是服务器版本,一边是自己修改的版本 。

9、xcode自带svn的使用

1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit

(右键该文件 -> source control -> commit selected file)

2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit

(右键该文件 -> source control -> commit selected file)

3、代码中 某文件后面有 “” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit

(右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何使svn update命令自动用服务器上的版本替换本地同名的但尚未加入版本控制的文件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情