SVN 服务端 和 客户端 安装细节
【VisualSvn Server】是Svn的服务器端,是免费的。
【VisualSvn】是Svn的客户端,和Visual Studio集成在一起,但不是免费的,通常我们用的客户端是【TortoiseSVN】,是免费的。
VisualSvn Server安装中需要注意的点:
1、选择默认配置,服务和控制台组件方式:
2、安装标准版 Standard Edition:
- Location是程序的安装路径
- Repositories 是存放SVN仓库的路径(注意:指定一个空的文件夹)
- 端口使用默认,协议有可能不能勾选https选项
妹的,装了一晚上都没成功,最后把https改成http后竟然就可以了,坑爹呀!
1
1
1
妹的,装了一晚上都没成功,最后把https改成http后竟然就可以了,坑爹呀!
3、如果要卸载VisualSvn Server,需先进入【服务管理器】把VisualSvn Server服务停掉,不然在卸载中途会说进程还在运行不能卸载
开始-->运行-->输入 services.msc
1
1
1
开始-->运行-->输入 services.msc
客户端 TortoiseSVN 安装中需要注意的点:
- 安装中Win7下会弹出一个对话框,问是否确认安装程序,选择"是"即可
- 完成安装后会要求你重启电脑
- 重启之后右键点击桌面选项菜单,如果发现中有TortoiseSVN,就表明安装成功了
如何在 Eclipse中设置 SVN 忽略文件
1、在eclipse里屏蔽不需要提交的文件
Window -> Preferences --> Team -> Ignored Resources -> 在右侧添加如下文件【bin、 target、m2-target、gen、.classpath、.project】
2、在Eclipse中设置忽略的.svn文件夹,此操作仅对此项目有效。
右键 --> Properties --> Java Build Path --> Source --> xxx/src --> Excluded --> 点右边的 Edit,在Exclusion patterns中加入【**/.svn/**】,让Eclipse忽略.svn目录即可。
3、在Eclipse的导航视图中,选中尚未加入版本控制的文件或目录,右键 --> Team --> 【添加至SVN:ignore】。此操作仅对此项目有效。
如何在 TortoiseSVN 中设置忽略文件
1、设置某个项目下的忽略文件,此操作仅对此项目有效。
在资源管理器中,右键一个未加入版本控制文件或目录,选择TortoiseSVN →Add to Ignore List,会出现一个子菜单,允许你仅选择忽略该文件或者忽略所有具有相同后缀的文件。
如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN →从忽略列表删除。
2、设置全局忽略文件,此操作对所有的项目都有效。
右键 --> TortoiseSVN --> 设置 --> 常规设置 --> 在如下输入框中添加忽略的文件类型
如何在Eclipse上创建SVN控制的工程
步骤:
1、在eclipse上新建一个project,在project上右键 --> 【team】 --> 【share project】,选择 repository 类型为【SVN】 --> 点击next
2、选择【使用已有资源库位置】或【创建新的资源库位置】--> 输入文件夹名(下方的选项代表放在指定子目录中) --> 点击Finish
3、输入用户名和密码(若有SVN服务器设有访问控制),自由选择是否打开synchronize视图
4、完成后切换到Java视图,这时若我们的项目各个文件及文件夹出现一个小问号,这说明我们已经 share 成功,只是还没提交到服务器
从上面可以看到bin、gen目录并没有小问号,这是因为我在【Window -> Preferences --> Team -> Ignored Resources】中添加了此目录
针对Android项目,我们应该添加如下文件或目录【bin、 target、m2-target、gen、.classpath、.project】
5、代码更改后,右键 --> team --> 提交--> 写日志,点击OK --> 上传到服务器,成功后图标状态就改变了!
如何将SVN路径中的项目导入eclipse
正确的方式
1、检出SVN服务器中的项目到本地
- 在硬盘中新建一个文件夹,在文件夹内右键选择"SVN检出"
- 选择要检出项目的URL、要检出到的位置、要检出的版本等
- 点击确定后开始从服务器下载,一会就检出成功了
2、像导入普通安卓项目一样导入本地项目到eclipse
- 选择导入类别Android--Existing Android code into workspace
- 复制本地项目路径,粘贴到Root Directory中,按回车(小键盘的回车不行)
- 导入成功后,导入的工程已经受SVN控制了!
不正确的方式一:通过eclipse中的SVN视图检出方式(检出为)
不正确的方式二:通过eclipse中的右键--Import--SVN--从SVN检出项目
不正确的方式三:通过eclipse中的SVN视图导出方式(导出)
"检出为" 的两种方式
- 第一种是"做为新项目检出,并使用新建项目向导进行配置"
仅当资源库中不存在.project工程文件时才使用,意思是如果代码库中有了这个工程文件,那么它就认为这是一个信息完整的工程,在导入的过程中就不需要再创建工程——选这选那的,因为.project工程文件中已包含了这一些列的信息,所以只有在代码库中不存在.project工程文件时才可选择。 - 第二种是"做为工作空间中的项目检出"
这一选项不管代码库中是否有.project文件都是可以选择的,如果代码库中没有.project文件时,选择此种方式,会创建一个简单的工程,那不是Java工程,或其他代码工程,这种工程无不进行相应手工设置是不能进行相应开发的,所以在代码库上无.project工程文件导入时,最好选择前一选项,根据新建项目向导来进行相应设置并自动生成.project工程文件。
如何将本地SVN服务端工程导入eclipse
比如从老师那里拷来了一份SVN服务端的工程压缩包,我该怎么从中获取真正的Android工程呢?
- 1、安装 VisualSVN Server(服务端的SVN软件)
- 2、将本地SVN工程导入到VisualSVN Server 中,复制 VisualSVN Server 中的URL。
- 3、后面的步骤就和上面【如何将SVN路径中的项目导入eclipse】一样了
如何比较指定两个版本间的差异
这个虽然很常用,但是经常找不到入口,蛋疼的很!
在【文件夹】右键--> SVN显示日志 --> 在日志列表中的任一日志上右键-->【与前一版本比较差异】--> 选择要比较的两个版本
注意:一定要在文件夹上右键时才会出现此选项,在文件上右键不会出现此选项。
细节:下面的版本号要比上面的大,这样才是比较后面的版本相比前面的版本有何改变。
如果上面的版本号比下面的大,则代表的是"如果"将最新版本恢复到上面的版本时的变更记录。
比如:若版本2相比版本1增加的一张图片,若上面为1下面为2,则变更记录为:
相反,则变更记录为:
点击 可以在两种比较方式间切换。
如何通过VisualSvn Server创建代码库
1、打开VisualSvn Server,在Repository上右键 --> Create New Repository...
2、选择常规方式
3、命名
4、选择初始化结构,选择下面的那个会创建trunk、branches、tags三个子目录
5、点击配置权限,当然也可完成后右键Properties配置。新建用户或组,设置用户或组的权限
6、右键【Copy URL to Clipboard】可以复制URL给团队成员
如何迁入本地项目到SVN服务器代码库
打开【源码】所在资源管理器目录,文件夹上右键 --> TortoiseSVN --> 导入 --> 输入上面创建代码库时生成的URL,确定 --> 输入账户密码(这个是在服务器设置的) --> 确定 --> 开始导入 --> 导入完成
这时刷新服务器【VisualSvn Server】里的项目,便可看到导入的项目:
使用eclipse解决文件冲突
文件冲突和树冲突
- 文件冲突:当多名开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。
- 树冲突:当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。
这两种情形需要不同的步骤来解决冲突,参考http://blog.csdn.net/sqk1988/article/details/6926745。
对于每个冲突的文件, Subversion 在你的目录下生成了三个文件:
- 【.mine】:这是你要提交的文件,在你更新你的工作副本之前存在于你的的工作副本中,没有冲突标志,也即除了你的最新修改外没有别的东西。
- 【.r(xxx)】:这是在你更新你的工作副本之前的基础版本文件,也即它是在你做最后修改之前所检出的文件。
- 【r(xxx+1)】:这个文件是当你更新你的工作副本时,你的 Subversion 客户端从服务器接收到的文件,也即这个文件是目前版本库中最新的版本。
【二选一形式解决冲突】
经过文件对比后,如果我们发现两者改动的是同一个位置或者是同一个功能点,那么我们可能需要选择性地保留一个,舍弃另一个。
- 如果舍弃的是本地文件,请右键单击该文件,然后在关联菜单中点击【覆盖/更新】(Replace/Update),此时Eclipse将提示"是否删除本地更改,并替换为资源库中的文件",直接点击【Yes】即可舍弃本地更改,并更新为资源库中的最新版本。
- 如果舍弃的是资源库中的文件,请右键单击该文件,然后在关联菜单中点击【标记为合并】,然后再点击【提交】即可。
【合并解决复杂的冲突】
如果本地和资源库中的文件改动都"各有所需"又"各有所弃",那么我们只能在文件对比中,一处处对比不同之处,并逐步修改为最终版本。
在修改与合并的过程中,有两个图标按钮比较重要。如下图所示的红色边框标注的两个图标,前者可以将右侧与本地文件没有产生冲突的改动复制到左侧的本地文件中,后者用于将鼠标光标当前所在的右侧改动区域复制到左侧相应位置。
在确认改动完成之后,同样的点击右键关联菜单中的【标记为合并】,然后直接【提交】即可。
使用SVN解决文件冲突
使用TortoiseSVN解决文件冲突
1、update时发现冲突。update后产生三个文件:
2、右键找到Edit conflicts(编辑冲突),打开之后,窗口里边有三个文档,左右下。下方的是最后成果,你需要根据左右两份不同版本,合成一个最终版
3、右键-Resolved(或在修改后保存时会有提示“是否标记为解决”,点击确认即可)
4、黄色警告不见了,变回平时熟悉的已修改标记~~现在可以正常commit了
Eclipse导入SVN项目版本不兼容问题
eclipse中导入本地svn管理的Android项目时,弹出以下错误提示:
org.apache.subversion.javahl.ClientException: Unsupported working copy format svn: This client is too old to work with the working copy at ‘D:\95_bqt‘ (format 31).
You need to get a newer Subversion client. For more details, see http://subversion.apache.org/faq.html#working-copy-format-change
2
2
1
org.apache.subversion.javahl.ClientException: Unsupported working copy format svn: This client is too old to work with the working copy at ‘D:\95_bqt‘ (format 31).
2
You need to get a newer Subversion client. For more details, see http://subversion.apache.org/faq.html#working-copy-format-change
原因是你的 Eclipse SVN 插件太旧了,更新安装 eclipse svn 插件就可以了!
注意:这里并不是说你在文件管理器Explorer右键时使用的 TortoiseSVN 太旧了,而是 Eclipse 中使用的 SVN 插件太旧了。