svn 怎么把代码提交到svn服务器
是用tortoiseSVN即svn客户端,对svn服务器上的信息进行检出,检出后本地修改完成,通过提交动作将修改的内容传递至服务器。你需要的是安装一个svn客户端,一个代码路径及对应拥有读写权限的账号密码。
SVN服务器版本库有两种格式,
一种为FSFS,
一种为BDB
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息
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
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)
word文档和其他其他代码文件没什么区别,一样是add后commit就行了
一般我在SVN版本库目录结构规划的时候,会把文档和代码分成两个大文件夹分别存放,以便于管理,但对SVN的操作都是完全一样的
如果你svn客户端是用tortoisesvn的话,先在svn服务器端新建一个空的版本库并分配给你读写权限(这一步通常需要svn管理员才能操作),然后用tortoisesvn从客户端将这个空版本库checkout出来,这会得到一个含隐藏的svn文件夹的文件夹,然后将你的项目内容复制到这个文件夹中,然后对这个文件夹点鼠标右键,选择commit,勾选所有要上传的文件,然后点确定就ok了。
首先要确定的一点,这两台SVN服务器中只能有一台可以进行读写操作,另一台只能做备份用(你可以从上面读取数据,但不能修改上面的数据)。
这样的话,可以使用SVN自带的同步机制,也就是svnsync命令,将源SVN服务器上的内容同步到备份SVN服务器上。一般是把svnsync指令放到源SVN服务器的post-commit钩子中,这样每次commit成功后,源SVN服务器就会自动调用这个钩子,执行一次与备份服务器之间的同步。
svnsync的具体用法稍微有点复杂,你搜索一下吧,很多这方面介绍。
因为不了解你为什么要同时上传到两台SVN服务器,所以只能暂时给出这样一个方案,如果你能详细描述你要达成的目的,那可能还会有其它的方案。
一、安装 SVN服务器程序
11运行 VisualSVN-Server-172msi
12选择程序安装目录 和 SVN仓库目录
我程序装在 C:\Program Files\VisualSVN Server , SVN仓库目录在 D:\SVN
13 安装完成,立即运行
二、服务器配置
21服务器维护界面
22仓库目录默认的内容
23创建新项目wapzucom
23创建用户ve
24设置项目的用户权限
Properties Security Add 选择刚创建的用户 ve ok 应用 确认
三、创建测试服务器目录 D:\WWWROOT ,本地开发目录 D:\WORKDIR
四、将代码(D:\Code )导入到项目仓库
输入用户名 密码 并 勾选 保存认证
导入成功,并返回版本号1
五、导出项目代码到工作副本、测试服务器目录
同理,另外导出一份到测试服务器目录D:\WWWROOT (测试服务器的Apache目录指向该位置)
六、使用Hooks自动更新测试服务器代码D:\WWWROOT
61 进入 D:\SVN\wapzucom\hooks 建立 post-commitbat 文件
编辑其内容 为"C:\Program Files\VisualSVN Server\bin\svnexe" update "D:\www\test" --quiet --username name --password pwd
或者可参考下面这段话:
接下来最关键的一步是,我们需要找到服务器上安装的版本库的路径下面,以版本库名称命名的文件夹下,有一个名字为hooks的文件夹,在这个文件夹下建立post-commitbat这样一个批处理文件,里面的内容如下:
@echo off
“D:\VisualSVN Server\bin\svnexe” update “D:\Apache Software Foundation\Apache22\htdocs\soupei360″ _username XXXXX _password XXXXX
update前面的路径,是SVN服务器端程序的执行文件路径, 后面的是在服务器上同步到的目录的路径,username和password后面是刚才建立用户的用户名和密码,这段批处理的意思是,当我们在本地编写代码,然后通过svn的commit提交时候,首先提交到版本库中,然后版本库自动用这个批处理,把内容同步到服务器上之前指定的文件夹中,从而实现本地和远程同步操作。
两款SVN配置软件的具体配置教程可以通过搜索引擎得到具体设置方法,在此需要特意强调的是,一定要将本地和服务器上的目录都check out后,批处理才能够自动同步,服务器上的目标文件夹没有check out的话,即使设置的路径正确,也是不能同步的。
62 设置访问权限
我的电脑 右键 管理 服务和应用程序 服务 VisualSVN Server 右键 属性 登陆 添加访问权限 用系统管理员账号(我这里是user)
重启服务器
63测试Hooks工作是否正常
修改 indexphp 状态
提交修改
最后打开D:\WWWROOT\indexphp 可以发现代码已经被成功update
PS : 目录说明
C:\Program Files\VisualSVN Server 服务器安装目录
D:\SVN 仓库更目录
D:\WORKDIR 本地开发用的工作目录
D:\WWWROOT 服务器测试目录(Apache 指向该目录,即可实现工作目录内容修改后提交到SVN自动发布到测试目录)
原文:https://wwwcnblogscom/LiuYanYGZ/p/11029552html
1首先将svn的所指定的目录checkout到本地目录下:
使用svn co +服务器的地址(path),输入服务器的密码即可,此时会自动在本地目录下同步服务器你所指定的目录及里面所有的文件(其中co 即是 checkout的简写)
例如:svn co http://svnxxxcom/path
此时在本地目录下就会出现名为path的文件夹
2往版本库中添加新的文件(夹)
将所要上传的文件(夹)复制到svn服务器的指定文件结构目录下,跳转到该目录下然后执行:
svn add +文件名
如,svn add mappy
svn ci -m “ xx” mappy (“”号内加的是文件夹的注释) 或
svn commit -m 'xx' mappy
3上传完成之后,在svn服务器刷新即可看到上传的文件(夹)
0条评论