An introduction to Subversion

Slides:



Advertisements
Similar presentations
版本控制的史前时代 用存储介质拷贝代码 代码相互覆盖,不知道哪个版本是正确的 搞错了无法恢复,需要定期手工备份
Advertisements

Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
动态网站开发 【HTTP与网络基础】 李博杰
Wireshark 03/03/2017.
DATE: 14/10/2009 陳威宇 格網技術組 雲端運算相關應用 (Based on Hadoop)
全面准确学习领会 党的十八精神.
第七章 操作系统接口 7.1 联机用户接口 7.2 Shell命令语言 7.3 系统调用 7.4 UNIX系统调用 7.5 图形用户接口.
红旗Linux认证培训 课程介绍.
Xoops架站器介紹 基隆市教育網路中心 王言俊 按一下以新增備忘稿.
第六章 Linux的系統管理基礎 課前指引 身為Linux系統管理員,除了熟悉作業系統的安裝、圖形介面的操作及系統指令的使用與軟體套件的安裝外,更需要瞭解基礎的Linux系統管理技巧。本節,將針對此部分進行說明。
操作系统结构.
大專院校校園e 化 PKI、智慧卡應用與整合.
Netman Linux 的防火牆設計與應用 Netman
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
Subversion (SVN) Presented by 李明璋 R /2/21
Lab312.
以憑證中心機制強化跨校無線漫遊認證環境安全 ;
HDS 資料保護解決方案更新.
Confidential Property
版本控制工具VSS.
雲端計算 參考書籍:Python+Spark 2.0+Hadoop 機器學習與大數據分析實戰
Web Server 架設.
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
台灣大學計算機及資訊網路中心 教學研究組 張傑生
本章导读 Webmin简介 Webmin的安装和配置 停止和启动Webmin服务 使用Webmin配置Samba服务
OpenFoundry.org 版本控制系統服務 使用教學
GitHub 2015/10/28 鄭雅馨.
GERRIT使用说明 配置管理-高峰
开源软件分布式版本控制器 GIT Linus的第二个伟大作品 演讲者:喻鹏.
ANDROID與OSGI平台整合.
Basis基本操作、使用者 管理與權限設定
Linux 圖形操作介面 GUI -- X-window 與 Webmin
欢乐学习SVN 讲师:FREE QQ:
中国散裂中子源小角谱仪 的实验数据格式与处理算法 报告人:张晟恺 中国科学院高能物理研究所 SCE 年8月18日
第二天 计算机基础技能培训 (一)linux基础知识
Introduction to Git Lu Li
Linux server 連線軟體: 主機:kitty.cs.pu.edu.tw 帳號:dar 密碼:n….w.
Stress Test Tool for SIP
SVN服务器的搭建(Windows) 柳峰
欢乐玩转GIT 讲师:FREE QQ:
Windows與Linux資源共享 SAMBA
Unit 10: Introduction to the Internet
Git & github By 宋正倫 (修訂by jmchen).
通識教育中心 邱子恒 網際網路資源之檢索與評選 通識教育中心 邱子恒
Microsoft SQL Server 2008 報表服務_設計
系统管理员培训(I期) 浙江省基层人民法院 -V8版介绍及系统管理培训 二OO八年四月二十三日 法院事业部经理:周春宏
第5章 网站服务器搭建与管理.
第二章 UNIX系统安装与常用命令.
人社學院 通識教育中心 邱子恒 網際網路資源之檢索與評選 人社學院 通識教育中心 邱子恒
Confidential Property
Git使用入门 —johnson.
UNIX指令-檔案與目錄操作.
講員:游文志 排程系統教育訓練 後台管理系統 講員:游文志
SVN User Manual
Lab01 工作站&Linux操作 日期:2011/03/07.
B A C D ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT
数数据的基本操作 电子工业出版社.
如何連上工作站 WorkStations: 1. Solaris 2. Linux Use X-Win32 (for Solaris)
第12章 Linux與 嵌入式uClinux系統
凌群電腦新一代   交易所TCP/IP Gateway
Git 新一代版本控制系统 superwen.
Git使用简介 rainzha
蔺华 ISV开发合作经理 平台及开发技术部 微软(中国)有限公司
中式烹调技艺 第五章.
第1章 WWW和LAMP基本觀念.
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Concurrent Versions System (CVS)
Presentation transcript:

An introduction to Subversion Jiann-Ching Liu center5@cc.ncu.edu.tw

上課前的準備 在 Windows 系統上抓陸龜並安裝 http://tortoisesvn.tigris.org/ or http://turtle.cc.ncu.edu.tw/download/TortoiseSVN-1.4.1.7992-win32-svn-1.4.2.msi 考慮安裝一個 SSH 的 Client 程式 [optional] http://turtle.cc.ncu.edu.tw/download/TectiaClient-4.0.7.1.exe 本投影片 PPT 檔 [optional] http://turtle.cc.ncu.edu.tw/download/svn.ppt

Why Subversion 幫你做程式的版本控制及備份 多人開發系統時, 可以很方便的取得別人更新的部份 (lock-modify-unlock / copy-modify-merge) 更方便做到上線系統及測試系統的程式碼同步 避免程式只在客戶端, 而中心沒有備份 避免程式隨人員離職而帶走卻沒有備份 Subversion 開發團隊 上線系統 測試機

Subversion’s Architecture CommandLine Client app GUI client apps Client Library Working copy management library Repository Access DAV SVN Local TCP/IP Network Apache mod_dav_svn svnserver Subversion Repository Berkeley DB FSFS

Repository Access URLs file:// direct repository access (on local disk) http:// access via WebDAV protocol to Subversion-aware Apache server https:// same as http://, but with SSL encryption. svn:// access via custom protocol to an svnserve server svn+ssh:// same as svn://, but through an SSH tunnel.

Basic Work Cycle Merge 有些小麻煩, 今天的介紹將不 Cover 這個 topic • Update your working copy svn update • Make changes svn add svn delete svn copy svn move • Examine your changes svn status svn diff svn revert • Merge others' changes into your working copy svn update svn resolved • Commit your changes svn commit Merge 有些小麻煩, 今天的介紹將不 Cover 這個 topic

Basic Work Cycle initial import Local data Repository checkout initial checkout Ver 1 Ver 1 update Ver 1 Commit Modify Ver 2 Ver 1m Ver 2 Commit Modify Ver 2m Ver 3

New 一個新 project 到 http://turtle.cc.ncu.edu.tw/ 以 Email 帳號登入後去 new 一個 project. 在 new 這個 project 時, 取一個易記的名稱, 這個名稱必須是英文/或數字的字串, 例如宿網系統可叫 dormnet 這個系統將自動建立一個獨立的 Repository, 位址在 https://turtle.cc.ncu.edu.tw/repos/dormnet 或 http://turtle.cc.ncu.edu.tw/repos/dormnet

規劃 Repository 的 structure /trunk [read-write] 一般的開發使用 (直接放,裡面不要去分版本目錄) /branches [read-write] 某個 revision 的 copy (可做任意修改) /releases [read-write] 某個 revision 的 copy (只能做 bugfix) /tags [read-only] 某個 revision 的 copy (不能修改)

Layout Example / x trunk y z x1 Branch 1 y2 branches x2 Branch 2 y3 z1 releases x2 release-1.1 y2 z2 tags x1 release-1.0 y1

Repository with new copy

Login (使用 Email 帳號密碼) 1 2

進行專案建立 1 2 3

建完儲存

Tips 最好是直接在你開發及服務的系統上使用 Subversion, 會比較方便 !! 可以考慮每天早上來做一次 update, 再開始改/寫程式, 下班做一次 commit. (對 trunk) 我們的 Lab 將帶各位在 Unix 下使用 Command line, Windows 下使用 GUI

Unix 安裝 Client 程式 Fedora (Linux) yum install subversion FreeBSD cd /usr/ports/devel/subversion make install Solaris Source 安裝 Source Code: http://subversion.tigris.org/downloads/subversion-1.4.2.tar.bz2

安裝 Subversion (from source) Openssl [optional] (http://www.openssl.org/) Berkeley DB (http://www.sleepycat.com/) Zlib (http://www.zlib.net/) apr/apr-util (http://apr.apache.org/) Apache [optional] (http://httpd.apache.org/) Neon (v0.25.5) (http://www.webdav.org/neon/) Subversion (http://subversion.tigris.org/)

Unix 的 Lab 可用 sparc19 或 sparc20 做練習 這個 Lab 是假設你有一個 Web ap, URL 是 http://www.ncu.edu.tw/~center??/svnlab/release 1. 將你的 Web ap 做 Initial import 2. 將你的 Web ap 做 initial checkout 3. 你的 Web ap 有檔案做了修改 (請同步到 repository) 4. 你的 Web ap 有新增檔案 (請同步到 repository) 為方便起見, 你可以在 sparc19/sparc20 執行下列指令來下載這個 Lab 的範例 cd mkdir –p public_html/svnlab cd public_html/svnlab wget http://turtle.cc.ncu.edu.tw/download/svnlab.tar tar xvf svnlab.tar

Lab Unix Lab 2/10 Unix 的 Lab (conti.) 先用瀏覽器看一下你的 Web ap 及 Repository 的現況. 網址分別是 http://www.ncu.edu.tw/~center??/svnlab/release https://turtle.cc.ncu.edu.tw/repos/center??/trunk Revision 1: /trunk .. Powered by Subversion version 1.3.2 (r19776).

第一次, 出現一些惱人的畫面, 輸入 p (permanently) 及密碼 Lab Unix Lab 3/10 Unix 的 Lab (conti.) 做 initial import cd ~/public_html/svnlab svn import release https://turtle.cc.ncu.edu.tw/repos/center??/trunk -m “Initial import” 用瀏覽器觀察 https://turtle.cc.ncu.edu.tw/repos/center??/trunk 第一次, 出現一些惱人的畫面, 輸入 p (permanently) 及密碼 svn import release https://turtle.cc.ncu.edu.tw/repos/center5/trunk -m "Initial import" Error validating server certificate for 'https://turtle.cc.ncu.edu.tw:443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! Certificate information: - Hostname: turtle.cc.ncu.edu.tw - Valid: from Aug 16 08:49:26 2006 GMT until Aug 23 08:49:26 2016 GMT - Issuer: Certificate Authority, National Central University, Chung Li, Taiwan, TW - Fingerprint: 07:b0:41:0b:56:05:93:5d:75:38:dd:7e:6d:a5:6d:c9:0a:ac:f3:09 (R)eject, accept (t)emporarily or accept (permanently? p Authentication realm: <https://turtle.cc.ncu.edu.tw:443> Subversion repository Password for 'center5': Adding (bin) release/dzh_header.gif Adding release/index.html Committed revision 2.

Lab Unix Lab 4/10 Unix 的 Lab (conti.) 用瀏覽器觀察 https://turtle.cc.ncu.edu.tw/repos/center??/trunk 接下來, 一定要做一次 initial checkout, 而不是直接繼續開發 (否則 subversion 無法追蹤你的程式異動) Revision 變成 2 Revision 2: /trunk .. dzh_header.gif index.html Powered by Subversion version 1.3.2 (r19776). 程式碼已經丟上來嘍

Unix 的 Lab (conti.) Unix Lab 5/10 Lab 做 initial checkout cd ~/public_html/svnlab svn checkout https://turtle.cc.ncu.edu.tw/repos/center??/trunk 用 ls –l 觀察一下, 發現多了一個 trunk 的目錄 [~/public_html/svnlab] 81: ls –l total 36 drwxr-xr-x 2 center5 man 512 Dec 8 14:22 release -rw-r--r-- 1 center5 man 30720 Dec 8 13:28 svnlab.tar drwxr-xr-x 3 center5 man 512 Dec 8 14:35 trunk drwxr-xr-x 2 center5 man 512 Dec 8 13:26 update svn checkout https://turtle.cc.ncu.edu.tw/repos/center5/trunk A trunk/dzh_header.gif A trunk/index.html Checked out revision 2. 很順利, 連密碼都沒問 ~~ 很方便, 但 …. 密碼被偷存起來了 !!

Lab Unix Lab 6/10 Unix 的 Lab (conti.) 現在, release 目錄已經沒用了, 把 release 目錄刪掉, 把 trunk 目錄改成 release 刪掉!! 太可怕了, 你可以先 tar 起來做個備份, 並比較一下 release 與 trunk 目錄有何不同 [~/public_html/svnlab] 89: tar jcvpf release.tar.bz2 release release/ release/index.html release/dzh_header.gif [~/public_html/svnlab] 90: diff -r -u release trunk Only in trunk: .svn [~/public_html/svnlab] 91: mv release release-save; mv trunk release [~/public_html/svnlab] 92: rm -fr release-save 如果是一個上線的系統, 指令一氣呵成, 讓轉換時間減少到最小 勇敢的把它殺了 !! Trunk 在每個子目錄多了 .svn 的隱藏目錄, 記載一些資訊 !! Think Twice !! : 如果你的目錄有一些特殊 的 file ownership 或 permission 的設定 !!

Unix 的 Lab (conti.) Unix Lab 7/10 Lab 現在 release 目錄已經是 checkout 出來的版本, 現在要對現有的檔案做點修改 如果你懶得改, 你可以 copy update 目錄下的 index.html 覆蓋 release 目錄的 index.html 就當作你已經做了修改, 這個動作如下 [~/public_html/svnlab] 98: cp -i update/index.html release cp: overwrite `release/index.html'? Y [~/public_html/svnlab] 99: 為了測試一下多人開發, 更新的問題, 我們再 checkout 一份做為比對 (跟剛剛 checkout 一樣, 直接就留在 trunk 目錄) 當你修改好時, 到 release 目錄下做 svn diff 可以先觀察, 做 svn update 看是否有人已做了更新, 最後做 svn commit [~/public_html/svnlab] 105: cd release [~/public_html/svnlab/release] 106: svn update At revision 2. [~/public_html/svnlab/release] 107: svn diff …. …. [~/public_html/svnlab/release] 108: svn commit -m 'modify a little bit‘ Sending index.html Transmitting file data . Committed revision 3. [~/public_html/svnlab/release] 108:

Unix 的 Lab (conti.) Unix Lab 8/10 Lab 剛剛我們在 commit 之前, checkout 一個版本在 trunk 目錄, 想像這是另一個開發者, 要如何取得最新的版本 … 沒錯, 用 svn update [~/public_html/svnlab/release] 110: cd ../trunk/ [~/public_html/svnlab/trunk] 111: svn update U index.html Updated to revision 3. [~/public_html/svnlab/trunk] 112: 現在, 我們在 Web ap 裡, 要加一個程式或文件, 你可以在 release 目錄去加, 或是直接複製 update 目錄下的 info.php 當做新加的程式. [~/public_html/svnlab/trunk] 114: cd ../release [~/public_html/svnlab/release] 115: cp ../update/info.php . [~/public_html/svnlab/release] 116: 將這個 info.php 程式加進來 [~/public_html/svnlab/release] 116: svn add info.php A info.php [~/public_html/svnlab/release] 117: 做 commit [~/public_html/svnlab/release] 118: svn commit -m 'add info.php‘ Adding info.php Transmitting file data . Committed revision 4. [~/public_html/svnlab/release] 119:

Lab Unix Lab 9/10 Unix 的 Lab (conti.) 用瀏覽器觀察 https://turtle.cc.ncu.edu.tw/repos/center??/trunk 相對於 svn add 的指令 svn delete, 請自行測試. Revision 變成 4 Revision 4: /trunk .. dzh_header.gif index.html info.php Powered by Subversion version 1.3.2 (r19776). Info.php 出現了

Lab Unix Lab 10/10 Unix 的 Lab (conti.) 如何做一個 branch 或一個 release, 其實很簡單, svn copy [~/public_html/svnlab/release] 122: svn copy https://turtle.cc.ncu.edu.tw/repos/center??/trunk https://turtle.cc.ncu.edu.tw/repos/center??/releases/release-1.0 -m "Release 1.0" Committed revision 5. [~/public_html/svnlab/release] 123: 請用瀏覽器去觀察 release 目錄 Lab 結束,不玩了 … 但!! 剛剛密碼好像被 svn 記住了 ~~ rm -fr ~/.subversion 可以讓它忘了一切 在同一行哦

TortoiseSVN 用 Windows 開發的可以鬆一口氣, 因為陸龜比海龜還容易 … 可以到 http://tortoisesvn.tigris.org/ 抓陸龜 安裝很簡單 …

Tortoise 上做 Import 1 在要 Import 的資料夾按右鍵 2 選 TortoiseSVN 3 做 Import

Import 2 1 3 心情好時, 可以輸入一些資訊 輸入正確的網址 完成 import 參考網址是 https://turtle.cc.ncu.edu.tw/repos/<project>/trunk

Initial checkout 先 new 一個資料夾 按右鍵選 “SVN Checkout” 鍵入 Repository 的 URL, 再輸出帳號及密碼即可 Checkout 出來的資料夾會有一個打綠色勾的符號, 資料夾裡的檔案 icon 也會有同樣情形 (參見下頁的 screenshot) 資料夾有個 .svn 的隱藏目錄 系統的開發工作目錄由原先 import 的目錄, 改為現在 checkout 出來的目錄

Screenshot

修改及新增檔案 在新的工作目錄 (由 SVN checkout 出來的那個) 上對現存檔案做修改, 這個檔案的 icon 會由原先綠色打勾的狀態變成紅色驚嘆號的狀態 新增檔案至工作目錄, 則該檔案沒有任何 SVN 的標記

Screenshot

Commit 按右鍵選 SVN Commit 出現右圖 陸龜察覺 index.html 已被修改, 另外那個 New Text Document 是新加進來的 (需點選才會加到 SVN)

做出一份 Release 點滑鼠右鍵,選 TortoiseSVN, 再選 repo-browser 輸入 Repository 的 URL 出現 Repository Browser 如圖 點 trunk 按右鍵選 Copy to 打上欲複製到的 URL, 如: https://turtle.cc.ncu.edu.tw/repos/<proj>/releases/release-1.0

Resources Subversion http://subversion.tigris.org/ TortoiseSVN / TortoiseMerge http://tortoisesvn.tigris.org/ Version Control with Subversion (E-Book) http://svnbook.red-bean.com/