2022年SVN使用教程 .pdf
SVN 使用教程概要概述SAE 自 2011-7-10日起,将全面支持SVN 代码部署,用户不仅可以通过任何SVN 客户端部署代码,而且 SAE 现有的代码部署方式也已经对接应用的SVN 仓库,即使不使用SVN 客户端部署代码,也保证了代码版本。如:通过桌面SDK 或在线 SDK 代码编辑器(http:/)等方式对代码的修改、部署等操作也会像svn commit一样,产生一个新版本。通过SVN 客户端 svn update可以获取最近的更新,也可以通过 svn 客户端回滚代码。SVN 仓库地址:http s:/ 用户名:SAE 安全邮箱SVN 密码:SAE 安全密码注:SVN用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码!与标准 SVN 的区别为了保持与SAE 兼容,使用svn 方式部署代码到SAE 有如下限制:1.文件名或目录名不允许含有以下字符:,*,?,|,另外文件或文件名的开始与结束也不允许有空格。2.上传单个文件大小不超过20M 3.单个目录下的文件个数不能超过2000 个4.每个应用代码总大小不超过100M 5.单个版本代码总大小不超过50M 6.appname目录下只允许存在10 个以内的版本,并且版本号必须为正整数。(也就是说appname 下面只允许出现10 个以内的正整数目录名,不允许有非目录的存在)代码部署原理SAE 代码部署分为三步:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 26 页 -创建应用登陆 SAE 在线管理平台,“创建新应用”(http:/ 仓库。假设新创建的应用名为newapp,那么仓库地址为:https:/ 客户端检出(checkout)该应用的本地工作目录。部署代码SAE 提供了不同的代码部署方式,可以分为两类:一是 通过 SVN 客户端部署,这是 SAE 推荐的代码部署方法。另一个是 通过非 SVN 客户端部署,即 SAE 之前提供的代码部署方式,如桌面SDK(winodws,linux)、在线 SDK(即代码在线编辑器)和推荐应用安装。这两类代码部署方法都会更新应用的SVN 仓库版本,但必须注意 的是非 SVN 客户端部署方式无法提供版本管理功能,只能看到最新版本的代码,也无法回滚代码。因此,强烈建议仅使用SVN 客户端方式部署代码,如果同时使用非SVN 客户端方式部署,为避免代码版本冲突,请及时在本地SVN 工作目录下执行svn update操作,保证本地工作目录与线上代码保持一致。验证代码更新后,通过svn update或直接通过浏览器访问应用查看代码是否已经更新到线上。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 26 页 -相关资源TortoiseSVN下载:http:/ SVN使用 TortoiseSVN 客户端在 Windows下推荐使用乌龟(Tortoise)SVN客户端。TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库(即 SAE 中央 SVN 仓库),除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将Subversion 和版本控制系统看作一种“时间机器”。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 26 页 -下载安装 TortoiseSVN下载:http:/ linux 下,安装就不多说了:)下面详细介绍使用TortoiseSVN向 SAE 部署代码。创建本地工作目录第一步,如图 1,创建一个新文件夹作为本地工作目录(Working directory),可以使用应用名为文件夹名。如,为我的应用devcenter创建本地工作目录。第二步,从SAE 的 SVN 仓库检出(checkout)一个应用的全部版本代码,如图2,右键-点击“SVN Checkout”名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 26 页 -在弹出页面中填写仓库路径即可,这里是:https:/ 3:名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 26 页 -Reversion处,“HEAD revision”是指最新版,也可以指定Revision 为任意一个版本。点击“OK”,出现下载界面,如图4:如果一切顺利,devcenter应用所有版本代码将会全部出现在刚刚创建的devcenter 文件夹下,如图5:修改代码名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 26 页 -在本地使用你喜欢的编辑器,编辑任意文件,保存后该文件图标将会出现红色感叹号,如图6 所示:看,刚刚修改过的index.php变色了。下面需要提交(commit)最近的更新。在 index.php文件上击右键,出现菜单,选择“SVN commit”,如图 7:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 26 页 -然后填写关于本次更新的日志(log message),这是必填项,否则commit 会失败。如图8:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 26 页 -当您看到如图9 所示,表明刚才的修改已经成功提交,并且前该 devcenter项目的 SVN 版本号加 1,变成 30.名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 26 页 -新增文件/文件夹在 SVN 工作目录下,对于文件修改,完成后只需要commit就 ok 了,但对于新增文件,或者从其它目录复制进来的文件或文件夹,需要在commit 之前需要做一步add 操作,即将文件或文件夹添加到svn 工作目录中来,否则SVN 客户端不认它。具体操作很简单,如图10:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 26 页 -然后再如图7 所示,右键commit即可。更多 Tortoise SVN使用帮助,请参阅:http:/ svn 插件 Notepad+是一款 Windows 环境下很受欢迎的免费开源的代码编辑器,有很丰富的第三方插件。下面介绍 Notepad+的 svn 插件的安装及使用。如图 12,点击 Plugin-Plugin Manager-Show Plugin Manager 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 26 页 -打开后,在“Available”页找到“Subversion”,然后点击“Install”,如图 13 所示:安装成功后会在Plugins 菜单下出现 Subversion 子菜单。打开之前 checkout下来的任一文件,如devcenter/1/index.php,编辑完成后,点击Plugins-Subversion-Commit File(或使用快捷键Ctrl+Alt+A)出现熟悉的一页,如图14 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 26 页 -对,这就是乌龟SVN 的 Commit页面,输入Log Message,点击“OK”即可提交。使用 UltraEdit Studio 部署UltraEdit Studio(注意不是 UltraEdit,UltraEdit 不能与 SVN 整合)配置稍微复杂些。第一步,SVN 仓库账号设置,如图15 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 26 页 -然后填写仓库信息,如图16 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 26 页 -完成后,创建Project,如图 17 所示:填写 project 名 b.prj 后,出现如图18 所示 Project Settings,点击“Add Folder”,出现“NewFolder”,将Group 前的勾去掉,然后点击“Browse”,在“Browse for Folder”页找到之前checkout 出现的本地工作目录。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 26 页 -点击“OK”后出现提示,如图19 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 26 页 -表明 UEStudio自动识别出了选择的代码目录是一个SVN 工作目录,并询问是否整合,点击“Yes”,出现如图 20 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 26 页 -大功告成,Close 之后即可以编辑代码,并随时commit 修改。如图21 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 26 页 -使用 EditPlus 部署 EditPlus依赖于 Tortoise SVN(TSVN),必须先安装。使用最简单,见图22 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 26 页 -当编辑 SVN 工作目录里的文件时,File-TSVN即出现相应可操作的菜单。Linux/Mac SVN仓库地址https:/ 要求统一使用https 方式部署代码;创建仓库登陆 SAE 在线管理平台(http:/),创建应用,成功后您即可以检出该应用代码。例如,您刚刚创建了应用newapp,在本地执行:名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 26 页 -svn checkout https:/ 第一次 checkout时需要验证,用户名/密码为您的SAE 安全邮箱和安全密码(非微博登陆账号密码)。创建版本假如,为 newapp应用创建版本1 目前提供两种方式:使用 svn 客户端svn checkout https:/ 安全邮箱和安全密码cd newapp mkdir 1 svn add 1 svn commit-madd version 1 for newapp 使用在线管理平台在 SAE 在线管理平台“代码管理”处创建版本即可。但为了避免与本地仓库冲突,务必在本地工作目录下执行:svn update,将最近的更新拉到本地来。更新代码更新代码前本地必须有一个工作目录(Working Directory),创建工作目录很简单,只需要检出(checkout)代码仓库即可。如,对于已经创建好的应用newapp,在本地执行:svn checkout https:/ 输入安全账号和安全密码,即完成本地工作目录的创建。上传代码需要增加某个文件或文件夹,如部署wordpress到版本 1。svn checkout https:/ cd newapp/1 cp-rf/path/to/wordpress/*./svn add./*svn commit-madd wordpress 名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 26 页 -修改代码假如需要修改newapp应用版本 1 根目录下某个文件,如index.php,完整的操作流程如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/1 vim index.php#这里编辑代码svn commit-m edit index.php 配置应用(appconfig)在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http:/ svn commit即可完成应用配置。如,现在需要更新应用newapp的默认版本3 的 appconfig,操作如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/3 vim config.yaml#这里按照 config.yaml 语法编辑即可。svn commit-m update config.yaml 注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN 仓库中。因此下次可以被 checkout 出来,但不会被用户访问到。在线编辑代码SVN 可以在线阅读应用代码,地址即SVN 仓库地址:https:/ appname换成自己的应用名即可登陆查看代码。在线编辑器可在管理面板 代码管理 编辑代码打开SVN for SAE 的限制条件为了保持与SAE 兼容,使用svn 方式部署代码到SAE 有如下限制:0.文件名或目录名不允许含有以下字符:,*,?,|,另外文件或文件名的开始与结束也不允许有空格。1.上传单个文件大小不超过4M 2.单个目录下的文件个数不能超过400 个3.每个应用代码总大小不超过100M 4.单个版本代码总大小不超过50M 5.appname目录下只允许存在10 个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10 个以内的正整数目录名,不允许有非目录的存在)常见错误说明及解决办法名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 26 页 -修改代码假如需要修改newapp应用版本 1 根目录下某个文件,如index.php,完整的操作流程如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/1 vim index.php#这里编辑代码svn commit-m edit index.php 配置应用(appconfig)在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http:/ svn commit即可完成应用配置。如,现在需要更新应用newapp的默认版本3 的 appconfig,操作如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/3 vim config.yaml#这里按照 config.yaml 语法编辑即可。svn commit-m update config.yaml 注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN 仓库中。因此下次可以被 checkout 出来,但不会被用户访问到。在线编辑代码SVN 可以在线阅读应用代码,地址即SVN 仓库地址:https:/ appname换成自己的应用名即可登陆查看代码。在线编辑器可在管理面板 代码管理 编辑代码打开SVN for SAE 的限制条件为了保持与SAE 兼容,使用svn 方式部署代码到SAE 有如下限制:0.文件名或目录名不允许含有以下字符:,*,?,|,另外文件或文件名的开始与结束也不允许有空格。1.上传单个文件大小不超过4M 2.单个目录下的文件个数不能超过400 个3.每个应用代码总大小不超过100M 4.单个版本代码总大小不超过50M 5.appname目录下只允许存在10 个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10 个以内的正整数目录名,不允许有非目录的存在)常见错误说明及解决办法名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 26 页 -修改代码假如需要修改newapp应用版本 1 根目录下某个文件,如index.php,完整的操作流程如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/1 vim index.php#这里编辑代码svn commit-m edit index.php 配置应用(appconfig)在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http:/ svn commit即可完成应用配置。如,现在需要更新应用newapp的默认版本3 的 appconfig,操作如下:svn checkout https:/ checkout 过了,不需要重新checkout。cd newapp/3 vim config.yaml#这里按照 config.yaml 语法编辑即可。svn commit-m update config.yaml 注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN 仓库中。因此下次可以被 checkout 出来,但不会被用户访问到。在线编辑代码SVN 可以在线阅读应用代码,地址即SVN 仓库地址:https:/ appname换成自己的应用名即可登陆查看代码。在线编辑器可在管理面板 代码管理 编辑代码打开SVN for SAE 的限制条件为了保持与SAE 兼容,使用svn 方式部署代码到SAE 有如下限制:0.文件名或目录名不允许含有以下字符:,*,?,|,另外文件或文件名的开始与结束也不允许有空格。1.上传单个文件大小不超过4M 2.单个目录下的文件个数不能超过400 个3.每个应用代码总大小不超过100M 4.单个版本代码总大小不超过50M 5.appname目录下只允许存在10 个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10 个以内的正整数目录名,不允许有非目录的存在)常见错误说明及解决办法名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 26 页 -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 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 26 页 -10.查看 SVN 仓库日志信息:#svn log workcopy 查看所有本地的历史日志,如果workcopy 为某文件,那么就是查看某个文件的日志信息。查看 SVN 仓库所有文件的日志信息:#svn log https:/ 提供的 SVN 服务完全支持标准SVN 的所有命令,更详细的使用说明请查阅SVN 官方帮助文档。SVN 命令帮助文档:http:/ 中文完全帮助文档:http:/svnbook.red- 名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 26 页 -