0.服务器主机需要打开websharing:
sudo su (进入root,需要输入密码)
apachectl start (没有反应即打开成功)

1.建立想要保存软件仓库的目录
最好在/users/name 下创建repositary目录
cd /users/name
mkdir /svn mkdir /svn/projectname 即创建了目录 /users/name/svn/projectname

2.创建版本仓库 svnadmin create /users/name/svn/projectname

3.修改授权配置 进入到仓库配置目录 cd /users/name/svn/projectname
(1)编辑配置文件 vi svnserve.conf 取消下列行的注释 anon-access = read auth-access = read password-db = passwd (密码配置的保存文件) auth-db = authz (认证配置的保存文件)

(2)编辑密码配置文件 vi passwd
格式为 "用户名 = 密码"

(3)编辑认证文件 vi authz
格式为 :
[groups] 用户组名 = 用户组成员
[需要授权的目录] @组名 = 权限 用户名 = 权限
例如:
[groups] g_developers = jcccn,jesse,bill g_tester = jerry,wang [/] @g_developer = r jcccn = rw * = [/jcccn] @g_tester = rw jcccn = rw * = r
(4)配置忽略文件 vi ~/.subversion/config (可选步骤) 找到 global-ignores 一行,去掉注释,编辑成 global-ignores = build *~.nib *.so *.pbxuser *.mode *.perspective* 找到 enable-auto-props = yes 把注释去掉,在[auto-props] Section声明以下文本文件 *.mode* = svn:mime-type=text/X-xcode *.pbxuser = svn:mime-type=text/X-xcode *.perspective* = svn:mime-type=text/X-xcode *.pbxproj = svn:mime-type=text/X-xcode

3.启动svnserve
svnserve -d -r /opt/svn/repos
结束服务可以用 killall -9 svnserve

4.在Xcode中配置和使用SVN (旧版xcode) (1)Xode的菜单中选择 SCM -> Configure Repositories,点击左边加号,Name填写repos的名字,SCM选择subversiion,然后填写SVN服务器的信息 Name:repos名如jcccn Scheme:svn Host:主机地址 如 192.168.1.104 Path:路径 如 / User:用户名 Password:密码
(2)然后选SCM -> Repositories ,你就可以进行创建文件夹登操作了。SVN的日常管理也可以在这里做。点击Import,选择想要进行版本控制的项目。
(3)Check out!选中项目,点击Check out,选择目标位置。相当于用svn对项目进行初始化,加入一些控制信息。这一步很重要,缺失了将不能进行版本控制
(4)打开Check out之后的项目,点击项目属性Get info,在general中将SCM Repository先选择为刚才自己的配置。
(5)设置好以后,你在你的项目视图中就可以看到新的一列,M表示该文件已经修改过,然后你已经可以通过SCM菜单,或者右键菜单直接进行SVN的操作, commit,update,revert,diff and log,任何你想要的。commit时,message最好详细填写本次版本相对于上次版本的改动

5.在smartSVN中配置和使用SVN (SVN客户端)
先普及目录树中几个小图标的意义:
什么图标都没有的代表文件已写在服务器硬盘上;
齿轮--文件第一次放入服务器缓存区后的标记(还没有写入硬盘,写入后消失);
向上箭头--需要将文件提交来写入服务器硬盘的标记(文件更改了或被创建了时出现);
绿色圆点--服务器的文件有更新的标记;
括号中的数字--更新次数;

(0)项目开始,服务器需要把服务器的本地项目导入svn库中(即上面所创建的 /users/name/svn/projectname),用import 把本地项目放到svn服务器缓存区,用add把import在缓存区(smartSVN中目录树的齿轮标识)的文件加到提交后选名单(一般项目开始需要将xcodeproj和projectname两个目录都提交),然后点commit提交写入服务器硬盘。
(1)在客户端,第一次使用需要初始化项目到客户端本地,用checkout,配置连接协议为svn,绝对路径为“/”即可,其它默认即可。(此时服务器的缓冲区就和客户端本地的项目关联了)
(2)客户端修改文件后,在目录树中的文件会呈现红色,双击能查看文件的修改变动信息,选择修改好的文件commit即可将其写入服务器硬盘(选择顶层目录能纵看所有文件情况)。(注意:修改、删除文件最好只操作自己负责的模块,如果要改动别人的模块,应该让负责的人员或leader操作,不然项目代码会陷入混乱,所以本地的绝对路径应该对不同模块创建好对应的文件夹供对应的人员方便操作)
(3)客户端添加删除文件,这个有2点需要注意,1.添加文件后应将文件add到服务器的提交后选名单;2.添加或删除文件后,xcodeproj的文件亦会被自动修改,如果不作一起commit的话,项目打开会看不到更新,但本地目录里却更新了的情况;
(4)每次commit提交前,应养成先update的习惯,确保你修改的代码文件在update后运行没问题后再commit(因为你修改的文件中所依赖的其它文件,可能在你修改开始后和准备提交前做了改动)。
(5)commit时记得写log日志信息,说明这次commit做了哪些工作或修改。
(6)新增文件后有齿轮状和红色状的DS_Store不能add和commit,红色状的UserInterfaceState.xcuserstate也一定不能commit上去,不然项目xcodeproj文件会有冲突不能打开,后果严重(而且DuanQoo.xcodeproj文件夹里的文件提交一定要单独提交,不要和m、h文件一起提交,不然也会出现冲突)。

6.命令:
1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co

2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库 svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关) 例如:svn commit -m “add test file for my test“ test.php
简写:svn ci

4、加锁/解锁 svn lock -m “LockMessage“ [--force] PATH 例如:svn lock -m “lock test file“ test.php
svn unlock PATH

5、更新到某个版本 svn update -r m path 例如: svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up

6、查看文件或者目录状态 1)svn status path(目录下的文件和子目录的状态,正常状态不显示) 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v path(显示文件和子目录状态) 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st

7、删除文件 svn delete path -m “delete test fle“ 例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file” 或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)

8、查看日志 svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息 svn info path
例如:svn info test.php

10、比较差异 svn diff path(将修改的文件与基础版本比较) 例如:svn diff test.php svn diff -r m:n path(对版本m和版本n比较差异) 例如:svn diff -r 200:201 test.php
简写:svn di

11、将两个版本之间的差异合并到当前文件 svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助 svn help
svn help ci

13、版本库下的文件和目录列表 svn list path 显示path目录下的所有属于版本库的文件和目录
简写:svn ls

14、创建纳入版本控制下的新目录 svn mkdir: 创建纳入版本控制下的新目录。 用法: 1、mkdir PATH… 2、mkdir URL… 创建版本控制的目录。 1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增 调度,以待下一次的提交。 2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改 svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert: 用法: revert PATH… 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录

16、代码库URL变更 svn switch (sw): 更新工作副本至不同的URL。 用法: 1、switch URL [PATH] 2、switch –relocate FROM TO [PATH...] 1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将 服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的 方法。 2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。

17、解决冲突 svn resolved: 移除工作副本的目录或文件的“冲突”状态。 用法: resolved PATH… 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。 svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

操作问题解决:
1、当import项目后提示“ ‘deratory’ is already a working copy for a different url ”时,因为提交目录下已经存在.svn的隐藏文件所致,需要把这个文件用指令删除才能恢复完全import成功,不然有部分文件不显示齿轮样的第一次导入标识。
sudo find /Users/justfly/Documents/workspace/justSVN/ -name ".svn" -exec rm -r {} \;
想要把SVN專案作轉移或複製時舊的「.svn」真的是很煩人的東西,最快的方式是用終端機輸入,指令中的意思就是搜尋在/Users/justfly/Documents/workspace/justSVN/中所有的「.svn」並用rm刪除,-r的參數是為了不要一個個去按「y」
2、当update后提示“The respository UUID doesn't match expected'”时,因为UUID是respository创建时自动生成的一个随机数,SVN Client利用UUID判断是否为同一个resp。一般遇到UUID不同时,需要重新Checkout;如果我们一定要改变UUID的话(这不正是我们想要的吗),注意,这是修改Server上resp的UUID: 
svnlook uuid /var/svn/repos // 查看
svnadmin setuuid /var/svn/repos cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec// 更新为
也可以直接修改work copy的UUID。本地WC的UUID写在文件.svn/entries文件中
3、在mac下设置svn的忽略文件(相对为上传者或客户端的时候),可以通过前往文件夹输入 ~/.subversion,然后将config文件用vi命令打开,将global-ignores的注释符去掉,改成global-ignores = *.o *.lo *.la *.al *.rej *~ #*# .#* .*.swp .DS_Store,可以自定义添加或删去显示文件的种类。

SVN 在 linux 下的配置的更多相关文章

  1. linux下安装配置svn服务器

    linux下安装配置svn服务器 1. svn服务器安装 将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器. tar xfvz su ...

  2. Linux 下安装配置 JDK7

    Linux 下安装配置 JDK7 配置环境(debian 7) 自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将“Operating System Distributor Li ...

  3. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  4. (转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记

    Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程 ...

  5. linux 下安装配置jboss as7以及部署应用

    linux 下安装配置jboss as7以及部署应用 1.测试平台及软件 centos 5.4 jdk-7u5-linux-i586.rpm jboss-as-7.1.1.Final.zip jbos ...

  6. Linux下VNC配置多个桌面和修改密码 不会当系统重启vnc失效

    1:vncserver 2:iptables -I INPUT -p tcp --dport 5901 -j ACCEPT   客户端方式 3:iptables -I INPUT -p tcp --d ...

  7. linux下iptables配置模板

    linux下iptables配置模板 # Flush all policy iptables -F iptables -X iptables -Z iptables -t nat -F iptable ...

  8. Linux下安装配置与使用MySQL数据库

    Linux下安装配置与使用MySQL数据库 在Linux下安装做开发时往往少不了要使用到MySQL数据库,下面就Linux系统为例讲解一下,如何安装MySQL数据库,如何启用/停.止MySQL服务,如 ...

  9. Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案

    什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...

随机推荐

  1. 如何在VMware虚拟机上安装Linux操作系统(Ubuntu)

    作为初学者想变为计算机大牛非一朝一夕,但掌握基本的计算机操作和常识却也不是多么难的事情.所以作为一名工科男,为了把握住接近女神的机会,也为了避免当白痴,学会装系统吧!of course为避免把自己的电 ...

  2. 学习ExtjsForVs(第一个案例HelloWord)

    第一个案例-Hello Word 1.本次练习以ext-4.0.7为例,首先从网上下载ext包. 2.打开包后将里面的三个文件或文件夹拷贝到项目中. resource文件夹 bootstrap.js ...

  3. Android中adb push和adb install的使用区别

    Android中adb push和adb install的使用区别  转载 本篇文章由史迎春(@三俗小女子)投稿.转载请注明原文地址. 在Android实际开发中,经常会使用adb命令,安装应用程序可 ...

  4. BZOJ 1066: [SCOI2007]蜥蜴( 最大流 )

    结点容量..拆点然后随便写 --------------------------------------------------------------- #include<cstdio> ...

  5. Labview学习之远程控制VI

    Labview学习之远程控制VI        从LabVIEW 6.1开始,LabVIEW集成了Remote Panels技术,允许用户直接在客户端计算机上打开并操作位于服务器端计算机上的VI的前面 ...

  6. 利用Comparator排序

    import java.util.Comparator; class Studentxx {     private String nameString;     private int age;   ...

  7. POJ 2110 Mountain Walking 二分+bfs

    传送门 昨天看到这个题还以为是个脑残的dp, 然而脑残的是我. 题目意思就是从左上角走到右下角, 设x为路径上的最大值-最小值, 求x的最小值. 二分x, 对于每一个x, 枚举下界lower, low ...

  8. IOS 特定于设备的开发:检查设备接近度和电池状态

    UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...

  9. Linux 中执行命令

    第一步: 在txt文件(文件名为cmd_file)中写入代码:echo this is content! 第二步: 授权chmod 555 cmd_file 第三步: 运行 ./cmd_file -- ...

  10. Html 小插件7 新闻免费代码

    http://rss.cnfol.com/freecode/ 定制方法图: