SVN 教程

SAE自2011-7-10日起,将全面支持SVN代码部署,用户不仅可以通过任何SVN客户端部署代码,而且SAE现有的代码部署方式也已经对接应用的SVN仓库,即使不使用SVN客户端部署代码,也保证了代码版本。

如:通过在线代码编辑器(http://sdk.tools.sinaapp.com)等方式对代码的修改、部署等操作也会像svn commit一样,产生一个新版本。通过SVN客户端svn update可以获取最近的更新,也可以通过svn客户端回滚代码。

SVN仓库地址:  https://svn.sinaapp.com/your_app_name (您可以通过此地址直接访问)

如:应用域名是 test.sinaapp.com,那么SVN仓库地址是:https://svn.sinaapp.com/test

SVN用户名:  SAE安全邮箱

SVN密码:  SAE安全密码(如已启用微盾动态密码,则此处填写“安全密码”+“微盾动态密码”)

注:SVN用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码!

与标准SVN的区别

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

1、文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允             许有空格。

2、上传单个文件大小不超过20M

3、单个目录下的文 件个数不能超过2000个

4、每个应用代码总大小不超过100M

5、单个版本代码总大小不超过50M

6、appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数             目录名,不允许有非目录的存在)

代码部署原理

SAE代码部署分为三步:

  创建应用

登陆SAE在线管理平台,“创建新应用”(http://sae.sina.com.cn/?m=myapp&a=create)时,如果创建成功,系统会自动为该应用创建一个SVN仓库。假设新创建的应用名为newapp,那么仓库地址为:

https://svn.sinaapp.com/newapp/

此时,可以通过本地SVN客户端检出(checkout)该应用的本地工作目录。

  部署代码

SAE提供了不同的代码部署方式,可以分为两类:

一是通过SVN客户端部署,这是SAE推荐的代码部署方法。

另一个是通过非SVN客户端部署,即在线代码在线编辑器和推荐应用安装。

这两类代码部署方法都会更新应用的SVN仓库版本,但必须注意的是非SVN客户端部署方式无法提供版本管理功能,只能看到最新版本的代码,也无法回滚代码。

因此,强烈建议仅使用SVN客户端方式部署代码,如果同时使用非SVN客户端方式部署,为避免代码版本冲突,请及时在本地SVN工作目录下执行svn update操作,保证本地工作目录与线上代码保持一致。

  验证

代码更新后,通过svn update或直接通过浏览器访问应用查看代码是否已经更新到线上。

相关资源

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

Subversion中文站:  http://www.subversion.org.cn/

Windows SVN

使用TortoiseSVN客户端

在Windows下推荐使用乌龟(Tortoise)SVN客户端。 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库(即SAE中央SVN仓库),除了能记住文件和目录的每次修改以 外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

下载安装

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

又不是在linux下,安装就不多说了 :)

下面详细介绍使用TortoiseSVN向SAE部署代码。

创建本地工作目录

第一步,如图1,创建一个新文件夹作为本地工作目录(Working directory),可以使用应用名为文件夹名。如,为我的应用devcenter创建本地工作目录。

第二步,从SAE的SVN仓库检出(checkout)一个应用的全部版本代码,如图2,右键-->点击“SVN Checkout”

在弹出页面中填写仓库路径即可,这里是:https://svn.sinaapp.com/devcenter/,其它默认参数即可,如图3:

Reversion处,“HEAD revision”是指最新版,也可以指定Revision为任意一个版本。

点击“OK”,出现下载界面,如图4:

如果一切顺利,devcenter应用所有版本代码将会全部出现在刚刚创建的devcenter文件夹下,如图5:

修改代码

在本地使用你喜欢的编辑器,编辑任意文件,保存后该文件图标将会出现红色感叹号,如图6所示:

看,刚刚修改过的index.php变色了。下面需要提交(commit)最近的更新。在index.php文件上击右键,出现菜单 ,

选择“SVN commit”,如图7:

然后填写关于本次更新的日志(log message),这是必填项,否则commit会失败。如图8:

当您看到如图9所示,表明刚才的修改已经成功提交,并且前该devcenter项目的SVN版本号加1,变成30.

新增文件/文件夹

在 SVN工作目录下,对于文件修改,完成后只需要commit就ok了,但对于新增文件,或者从其它目录复制进来的文件或文件夹,需要在commit之前需 要做一步add操作,即将文件或文件夹添加到svn工作目录中来,否则SVN客户端不认它。具体操作很简单,如图10:

然后再如图7所示,右键commit 即可。

更多Tortoise SVN使用帮助,请参阅:http://www.subversion.org.cn/tsvndoc/

Notepad++集成svn插件

Notepad++ 是一款Windows环境下很受欢迎的免费开源的代码编辑器,有很丰富的第三方插件。

下面介绍Notepad++的svn插件的安装及使用。

如图12,点击Plugin --> Plugin Manager --> Show Plugin Manager

打开后,在“Available”页找到“Subversion”,然后点击“Install”,如图13所示:

安装成功后会在Plugins菜单下出现"Subversion"子菜单。

打开之前checkout下来的任一文件,如devcenter/1/index.php,编辑完成后,点击Plugins --> Subversion --> Commit File(或使用    快捷键Ctrl+Alt+A)

出现熟悉的一页,如图14所示:

对,这就是乌龟SVN的Commit页面,输入Log Message,点击“OK”即可提交。

使用UltraEdit Studio部署

UltraEdit Studio(注意不是UltraEdit,UltraEdit不能与SVN整合)配置稍微复杂些。

第一步,SVN仓库账号设置,如图15所示:

然后填写仓库信息,如图16所示:

完成后,创建Project,如图17所示:

填写project名b.prj后,出现如图18所示"Project Settings",点击“Add Folder”,出现“NewFolder”,将"Group"前的勾去掉,然后点击“Browse”,在“Browse for Folder”页找到之前checkout出现的本地工作目录。

点击“OK”后出现提示,如图19所示:

表明UEStudio自动识别出了选择的代码目录是一个SVN工作目录,并询问是否整合,点击“Yes”,出现如图20所示:

大功告成,"Close"之后即可以编辑代码,并随时commit修改。如图21所示:

使用EditPlus部署

EditPlus依赖于Tortoise SVN(TSVN),必须先安装。

使用最简单,见图22所示:

当编辑SVN工作目录里的文件时,File --> TSVN即出现相应可操作的菜单。

Linux/Mac SVN

仓库地址

https://svn.sinaapp.com/appname/

为了传输安全,SAE要求统一使用https方式部署代码;

创建仓库

登陆SAE在线管理平台(http://sae.sina.com.cn),创建应用,成功后您即可以检出该应用代码。

例如,您刚刚创建了应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp

第一次checkout时需要验证,用户名/密码为您的SAE安全邮箱和安全密码(非微博登陆账号密码,如已启用微盾动态密码,则此处填写“安全密码”+“微盾动态密码”)。

创建版本

假如,为newapp应用创建版本1

目前提供两种方式:

使用svn客户端

svn checkout https://svn.sinaapp.com/newapp  #此处需要认证,用户名/密码为您的SAE安全邮箱和安全密码(如已启用微盾动态密码,则此处填写“安全密码”+“微盾动态密码”)

cd newapp

mkdir 1

svn add 1

svn commit -m"add version 1 for newapp"

使用在线管理平台

在SAE在线管理平台“代码管理”处创建版本即可。但为了避免与本地仓库冲突,务必在本地工作目录下执行:svn update ,将最近的更新拉到本地来。

更新代码

更新代码前本地必须有一个工作目录(Working Directory),创建工作目录很简单,只需要检出(checkout)代码仓库即可。如,对于已经创建好的应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp

输入安全账号和安全密码,即完成本地工作目录的创建。

上传代码

需要增加某个文件或文件夹,如部署wordpress到版本1。

svn checkout https://svn.sinaapp.com/newapp

cd newapp/1

cp -rf /path/to/wordpress/* ./

svn add ./*

svn commit -m"add wordpress"

修改代码

假如需要修改newapp应用版本1根目录下某个文件,如index.php,完整的操作流程如下:

svn checkout https://svn.sinaapp.com/newapp    #如果已经checkout过了,不需要重新checkout。

cd newapp/1

vim index.php   #这里编辑代码

svn commit -m "edit index.php"

配置应用(appconfig)

在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http://sae.sina.com.cn/?m=devcenter&catId=193),然后通过svn commit即可完成应用配置。

如,现在需要更新应用newapp的默认版本3的appconfig,操作如下:

svn checkout https://svn.sinaapp.com/newapp    #如果已经checkout过了,不需要重新checkout。

cd newapp/3

vim config.yaml   #这里按照config.yaml语法编辑即可。

svn commit -m "update config.yaml"

注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN仓库中。因此下次可以被checkout出来,但不会被用户访问到。

在线编辑代码

SVN可以在线阅读应用代码,地址即SVN仓库地址:https://svn.sinaapp.com/appname/

将appname换成自己的应用名即可登陆查看代码。

在线编辑器 可在管理面板>>代码管理>>编辑代码 打开

SVN for SAE的限制条件

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

1、文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允许有空格。

2、上传单个文件大小不超过4M

3、单个目录下的文 件个数不能超过400个

4、每个应用代码总大小不超过100M

5、单个版本代码总大小不超过50M

6、appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数             目录名,不允许有非目录的存在)

常见错误说明及解决办法

错误提示
错误原因
解决方法

The change log need some words(not null)
提交时没有添加log message
提交时加上log message即可

The log message is a pathname (was -F intended?); use ‘--force-log‘ to override
log message 与路径名称相同
修改log message

Error file xxx in not allowed in root directory!
working copy的根目录下不允许有名为xxx的文件(只能是正整数版本目录)
删除该文件或者移到到版本目录下

directory xxx/ is not allowed in root directory! Only positive integer dirs are allowed!

working copy的根目录下不允许有名为xxx的目录(只能是正整数版本目录)
删除该目录或者移到版本目录下

Too many versions!(less than 10 is permited)
版本目录多于10个,最多不超过10个
删除刚刚创建的版本目录即可。

Too many files: XXX (less than 2000 is allowed).
XXX目录下文件的数量超过2000
删除XXX目录下的文件,使其总数降至2000以下

dir APPNAME/dir(size:xxxx) is too large less than xxx
该应用下代码(不包括.svn目录)总大小超过100M,或某个版本总大小超过50M
删除不必要的代码再尝试提交

File XXX is too large!(less than 4M)
单个文件大小超过4M
删除重试

类似Repository UUID ‘305daf1b-94be-48ee-a4b9-f4bcd36320de‘ doesn‘t match expected UUID ‘44e2f7a2-1b69-4710-974a-b6edef0fdc12‘
服务器端仓库被删除重建,客户端对原仓库进行操作导致。
重新checkout出一份代码即可

add vers xxx faild
文件部署失败
内部原因,请联系[email protected]。

常用svn命令说明

1、从SVN仓库中检索出代码到工作拷贝:

# svn checkout https://svn.sinaapp.com/appname [workcopy]

其中workcopy是可选的,如果不写workcopy,SVN会默认将appname做为workcopy。

如果只检索某个版本:

# svn checkout https://svn.sinaapp.com/appname/appversion [workcopy]

只检索某个版本的某个目录:

# svn checkout https://svn.sinaapp.com/appname/appversion/folder [workcopy]

2、向SVN仓库提交代码:

# svn commit -m "here is message"

3、将本地文件添加到工作拷贝:

# svn add something

注:如果something为文件,svn会将这个文件添加到工作拷贝;如果something是目录,svn会将目录及里面的文件全添加到工作                      拷贝。something也可以是通配符*,这样会忽略已经添加过的文件。

4、从工作拷贝中删除一个文件:

# svn delete something

注:如果something为文件,svn会将这个文件从工作拷贝中删除;如果something是目录,svn会将目录及里面的文件全部从工作                      拷贝中删除。

5、直接从SVN仓库中删除文件:

# svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something

注:可以从SVN仓库中直接删除单个文件或单个目录甚至某个版本。

6、将一个本地项目导入到SVN仓库:

导入应用的某个版本:

# svn import localdir https://svn.sinaapp.com/appname/appversion

注:要确保目前应用的appversion不冲突。

7、查看工作拷贝中的文件或目录状态:

# svn status [something]

8、更新自己的工作拷贝:

# svn update

注:从SVN仓库下载最新版本,此命令会导致本地没有提交的更改丢失,建议使用此命令前先查看一下本地拷贝状态(svn status).

9、取消对代码修改

取消对代码的修改分为两种情况。

第一种情况:改动没有被提交(commit)。

这种情况下,使用svn revert就能取消之前的修改。

svn revert用法如下:

# svn revert [-R] something

其中something可以是(目录或文件的)相对路径也可以是绝对路径。

当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则              只会将something这个目录的改动。

在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。

注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修                        改。

第二种情况:改动已经被提交(commit)。这种情况下,用svn merge命令来进行回滚。

回滚的操作过程如下:

1) 保证我们拿到的是最新代码:

svn update

假设最新版本号是28。

2) 然后找出要回滚的确切版本号:

svn log [something]

假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目

如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]

3) 回滚到版本号25:

svn merge -r 28:25 something

为了保险起见,再次确认回滚的结果:

svn diff [something]

发现正确无误,提交。

4) 提交回滚:

svn commit -m "Revert revision from r28 to r25,because of ..."

提交后版本变成了29。

将以上操作总结为三条如下:

a. svn update,svn log,找到最新版本(latest revision)

b. 找到自己想要回滚的版本号(rollbak revision)

c. 用svn merge来回滚: svn merge -r : something

10、查看SVN仓库日志信息:

# svn log [workcopy]

查看所有本地的历史日志,如果workcopy为某文件,那么就是查看某个文件的日志信息。

查看SVN仓库所有文件的日志信息:

# svn log https://svn.sinaapp.com/appname/

这个命令会查看所有修改过的日志。

注:SAE提供的SVN服务完全支持标准SVN的所有命令,更详细的使用说明请查阅SVN官方帮助文档。

SVN命令帮助文档:http://www.subversion.org.cn/svnbook/1.4/svn.ref.html

中文完全帮助文档:http://svnbook.red-bean.com/index.zh.html

时间: 2024-10-05 21:45:09

SVN 教程的相关文章

TortoiseSVN下载,安装,配置,常用操作 svn教程

   TortoiseSVN下载,安装,配置,常用操作 svn教程 首先在百度搜索并下载 TortoiseSVN 推荐从官网下载,软件分为32位和64位版本,下载时请根据自己的系统位数进行下载:  安装过程: 1.下载软件后,双击程序进行安装,点击"Next": 2.在许可证协议页面,选择"I Accept the terms in the License Agreement",点击"Next": 3.在自定义选项页面,可以选择安装目录,也可以直

XCode中使用SVN 教程

XCode中使用SVN 教程 [转载][iOS]SVN详细教程(一) (2013-03-18 15:50:02) 转载▼ 标签: 转载   原文地址:[iOS]SVN详细教程(一)作者:Sin柠檬 修改subversion.config方法: 可以直接在终端上输入:vi ~/.subversion/config来编辑. 也可以通过Finder搜索.subversion,点击下边的+号,进入高级搜索界面,找到各类->其他-> 文件可见性 ,选择不可见文件即可搜索到.subversion文件夹.

SVN教程 -- 基于自己学习记录

SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控制系统. SVN官网链接 b. 什么是集中式版本控制系统? 集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码.由于源代码最后都是放在服务器上的,服务器统

http://src.chromium.org/svn/ 教程及源码

chromium 官网登不进去,最近在学习chrome插件制作,网上教程很多大多没有源码 其实作为开源软件 官方提供了全部源码地址:http://src.chromium.org/svn/ PRESUBMIT.py branches/ codereview.settings releases/ trunk/ 安装好TortoiseSVN就可以同步了了,一般我们只关注trunk/,直接把地址复制到TortoiseSVN就行了 SVN中tag branch trunk用法详解 2010-05-24

SVN教程——分支与合并

作者:zhanhailiang 日期:2014-10-17 分支的应用场景 总结一句就是方便并行开发. Subversion has commands to help you maintain parallel branches of your files and directories. It allows you to create branches by copying your data, and remembers that the copies are related to one

svn教程(更新ing……)

参考 http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/index.html 锁定 场景 Harry获取到副本A,并获取对A文件副本锁定 Sally要获取A文件的锁定,版本库拒绝 Harry修改A本地副本称为A‘,并提交到库,然后解除锁定 Sally可以锁定修改后的A文件即A’ 默认情况下所有的东西都没有被锁定,有提交权限的人可以提交任何文件,其他人可以更新他们的工作副本,在库中改变的东西会与本地合并. 你对一个文件“取得锁定”,只有你自

Eclipse安装SVN教程

第1种安装方法 下载SVN安装包.地址:subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240. 根据Eclipse版本进行下载. 启动Eclipse,找到Help->Install new software...,单击Add,输入Name,Location选择刚才下载的安装包的位置,或者输入地址http://subclipse.tigris.org/update_1.8.x. 全选中这两个,点击next. 5 选择I ac

svn教程

安装过程: 1.下载软件后,双击程序进行安装,点击“Next”: 2.在许可证协议页面,选择“I Accept the terms in the License Agreement”,点击“Next”: 3.在自定义选项页面,可以选择安装目录,也可以直接点击“Next”进行安装: 4.点击“Install”开始安装: 5.安装完成后,点击“Finsh”: 步骤阅读 步骤阅读 步骤阅读 步骤阅读 建立库: 1.新建文件夹,目录和文件夹名称最好都用英文,不要使用中文: 2.打开文件夹,在空白处按下“

版本控制工具SVN教程(一)

写在前面 首先说一下,为什么要了解一些基础的版本管理工具? 比如在公司或者有其他合作的伙伴(大于或者等于2个人),共同参与合作软件项目开发,每一次更改都要发包或者重新合并吗,那万一同事或者伙伴都改了相同的代码,又该如何处理? 所以较好的处理方式就是------利用版本控制(Revision Control)工具. 利用版本控制的好处有: 可以备份多个版本,利于多个版本的控制(即使当前的版本崩溃了,也能回到某一个正常的版本,节省了返工的成本) 不容易引发冲突bug,易于解决: 项目发布简单: 版本