2016/05/27

版本控制工具 SVN - 常用的基本指令 / 狀態表示

SVN 是一個軟體協同開發時的版本控制工具, 之前比較常用的git, 最近手上案子滿多是用SVN, 也是一個很熱門的版本控制。

Windows平台上安裝SVN Server 常見的五種方式:

SVN服務端subversion服務器程序在windows下共有5個下載版本,分別是:Collabnet,SlikSVN,VisualSVN,WANdisco,Win32Svn。(參考)
其中,

  • * CollabNet是功能最強大的,因為svn的創始者就是CollabNet,不過這個版本因為功能最多,所以整個軟件包含也是最臃的,安裝包就有100多M,而且因為是運行在JAVA平台上 ,要佔用很大的內存資源;
  • * SlikSVN和Win32Svn這兩個基本一樣,都只有svn的內核,沒有界面,也就是使用的時候只能用命令行操作。這兩個稍微有些區別,比如win32Svn了和apache的庫文件,而slikSVN沒有 ;
  • * VisualSVN是最傻瓜似的svn,安裝和配置都有圖形界面,操作起來很方便;
    可以使用collabNet,服務端是可視化的,比較方便

首先, 說明 Trunk、Tags、Branches 的差別

Trunk : 主要開發
Tags : 當要 Release 時,就標個Tag。
Branches : 當要加新功能,或是Bug fix時,將 Trunk 複制一份到 Branches 再繼續開發,之後再 Merge 回Trunk

而以上三個目錄, 不是憑空生出來的! 有兩種方式可以建立:
1. 自己手動建立 (參考)

$ mkdir MyProject
$ mkdir MyProject/trunk
$ mkdir MyProject/branches
$ mkdir MyProject/tags
svn import MyProject svn://server_address/svn_path/repository/MyProject -m “info”

2. 透過TortoiseSVN 建立 (參考1, 參考2: 用tortoiseSVN比較tags之間差異)
預設的floder stucture 就是有 trunk, branches, tags目錄

然後, 要知道常用 SVN 的指令

  • checkout (co) : 將SVN上的資料checkout出來
    svn checkout svn+ssh://trac.net/home/svn/repos/branches/life
    svn co http://SVN_PATH/svn_project
    svn co file:///SVN_PATH/svn_project
    svn co -r 12 file:///var/lib/svn/dev/projects # 出第12版的 projcets code
  • update (up) : 更新為SVN上的最新版本
    svn up
  • commit (ci) : 將目前有修改的 commit 到 SVN
    svn ci (全部有修改的都會commit)
    svn ci file1 file2 file3 (只將file1 2 3 commit)
  • add : 將檔案或目錄加進 SVN ,之後還要再 commit 才會真的加進 SVN
    svn add file
    svn add folder
  • del, rm : 將檔案或目錄刪除,之後還要再 commit 才會真的從 SVN 刪除
    svn del file 或 svn rm file
    svn del folder 或 svn rm folder
  • mv : 改檔名,但之前的紀錄還是會繼續保留
    svn mv old_file new_file
  • status (st) : 從上次up後,看目前檔案/結構 跟 SVN 線上的版本有哪些不同
    svn st
  • revert : 還原成前一個版本的狀態
    svn revert file
    svn revert folder
    svn revert *
    SVN_CHECKOUT_DIR$ svn revert [file | directory]
  • info : 顯示 SVN 的資訊, 以及trunk/tags/branches目前處於何處的資訊
    ex:

    C:\svn\respoity> svn infoPath: .Working Copy Root Path: C:\svn\client\respoity <=可知道目前處於哪裡 trunk/tags/branchesURL: file:///C:/svn/respoityRelative URL: ^/Repository Root: file:///C:/svn/respoityRepository UUID: xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxxRevision: 10Node Kind: directorySchedule: normalLast Changed Author: YOUR_NAMELast Changed Rev: 10Last Changed Date: 2015-06-11 14:43:20
  • resolved : 如果檔案有conflict,處理完後,要resolved,才可以ci
    svn resolved file
  • diff : 將現在的檔案跟SVN做比較
    svn diff (比對全部)
    svn diff file
    svn diff folder
    svn diff -r 100:101 也可以 101:100
  • export : 將SVN上的資料export出來,不包含.svn
    svn export svn+ssh://trac.net/home/svn/repos/branches/life
  • copy (cp) : 首先是建立一個Branch的方式。
    EX:用 trunk/life 建一份branch 到 branches/life
    svn cp svn+ssh://trac.net/svn/trunk/life svn+ssh://trac.net/svn/branches/life -m ‘create branch’
  • import : 將整個資料匣,加到SVN中。
    EX:將life資料匣,import到SVN的trunk/life
    svn import life svn+ssh://chingwei@trac.net/svn/trunk/life
    EX:
    svn import project_directory http://DOMAIN/svn_project
    svn import project_directory file:///SVN_PATH/svn_project
  • log : 如果沒輸入參數, 預設會把所有 commit log 都列出來
    svn log
    svn log -l 10 # 顯示 10 筆(最新 10筆 Log)
    svn log -c 100 # 顯示 revision 100 的 Logsvn log -v -c 100 # 顯示 revision 100 的詳細 Log
  • lock : 鎖定,這樣別人就沒辦法改了
    svn lock file
  • unlock : 解除鎖定
    svn unlock file
  • List: (list 可簡寫成 ls), 看上面有哪些檔案/資料c
    svn ls http://SVN_PATH/svn_project
    svn ls file:///SVN_PATH/svn_project
  • svn cleanup — 遞歸清理工作副本。刪除未完成的工作副本鎖定,並恢復未完成的操作
    $ svn cleanup
    $ svn cleanup /path/to/working-copy

每列前面的大寫字母表示: SVN 狀態

? – 是新的檔案,不在SVN裡
A – 新增的檔案
C – 檔案跟SVN的不同,合併失敗,要手動處理
D – 移除的檔案
M – 有修改過
U – 有更新
G – 跟SVN上的檔案不同,但合併成功。

如何取消(退回)對程式碼的修改 ?

第一種情況:改動沒有被提交(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。
  • 將以上操作總結為三條如下:
    1. svn update,svn log,找到最新版本(latest revision)
    2. 找到自己想要回滾的版本號(rollbak revision)
    3. 用svn merge來回滾: svn merge -r : something

2016/05/23

NoteBook Battery 筆電電池的使用及保養方式概論

如果我有插電(用變壓器直接機筆電)時,筆電的電池需要拔下來嗎?
因為現在的筆電電池都有過充保護,電池在充滿電後就會自動斷開,所以不用擔心什麼。反倒是,你把筆電電池把下來時,如果突然停電,這時你資料的損失絕對比電池的損失還嚴重吧!如果你是長時間插電的話,這時倒是可以考慮把電池拔下。長時間是指多久呢?網友是提出一個大略的時間:一個月。但最好是不要充飽後才拔下來,電池長時間閒置時最佳的保存電容量是 30~50% 之間。

剛買新機時,電池需要充滿XX小時(xx為任意數)嗎?
因為現在的筆電電池都有過充保護,所以充滿xx小時也是沒什麼意義的!因為他充滿電後,就會自動斷開,這時就算你充再多的電也是沒用的。

電池需要重複充放幾次嗎?
有人說要將剛到手的電池重複充放幾次,這樣才能要活化電池。但…你在用它時,他就會活化了,其實沒必要特意去充放幾次來活化!另一方面,電池的壽命是以 cycle count 來計算的(cycle count 簡單說,就是”充-放”這樣的流程次數),一般的鋰電池大約有500次的壽命,所以多餘的充放動作只是在消耗它的壽命。(但是聽說,常使用電池的話,壽命常常會高於這個數字。)

該如何保養筆電的電池呢?
基本上,就是該用就用!太過在意,反而使用起來綁手綁腳吧,不是嗎!?如果你想要讓電池的壽命更加延長的話,建議電量低到20%即可充電,80%停止,這個方法可以用來減少 charge cycle,以延長電池的壽命。但這僅適用於沒有那麼長時間需求的使用者比較有效。因為現在廠商大多都有提供軟體可供設定,所以這個動作很容易設定,如果沒有的話就要手動了,甚至有些廠商也有他自己預設的延伸電池壽命的充電方式,所以這也不用太擔心。如果你是長時間不使用電池的人,那麼保養方式請參考上面一直插電的保養方式。

結論…
雖然鋰電池的壽命雖然是以 cycle count 來計算,但這只是個參考指標,並非絕對,使用上不需要吝惜充電次數,只要不要電量太低才充電,或是充飽卻長時間閒置的話,電池衰退的情況並不會很嚴重。
此外,有人提出電池衰退的主要原因還是 cell(電池)本身的品質,雖然可以在使用方式上減少損耗,但是 cell 的先天條件還是決定性的關鍵。

結論的結論:
就跟我上面跟跟說得一樣,該用的時候就用,不需要給自己什麼壓力!要不然,這樣不是反而失去了用筆電電池的意義了嗎!?

2016/05/12

該如何設定G4鬧鐘的音量與鈴聲? 因為原本太大聲了...

Q: 最近每天早上都被G4的鬧鐘嚇醒, 因為原廠預設的音量太大聲了! 我把手機音量設到最小也沒用, 不知道哪設定鈴聲音量?

A: 跟我一樣, 一開始我也找不到! 但其實在設定鬧鐘細節的頁面往下拉…就會看到原來還有其他選項! 設定鬧鐘時間時,螢幕往下移動有暫停時間.鬧鐘提示音及鬧鐘音量等可選擇。

(引用自 mobile01)

2016/05/09

2016信用卡推薦- 現金回饋,日本旅遊, 電影購物停車等生活優惠卡


元大鑽金卡 – (使用動機: 現金回饋)

  • 這張很多人推薦, 因為它很強又很簡單使用
  • 國內消費都可1.2%現金回饋, 國外消費2.2%現金回饋
  • 通常去國外消費會被收取1.5%左右手續費, 這張卡讓我們多賺0.7%回饋, 所以免擔心!

樂天信用卡JCB  – (使用動機: 日本旅遊)

  • 如果說上面的元大鑽金卡是海外通吃的強卡, 那樂天信用卡JCB絕對是日本旅遊的強者!
  • [心得] 樂天信用卡2016新優惠-Bic camaera/wifi五折/松本清/免刷卡手續費..玩日本超優惠
    • 1.在台灣樂天旅遊訂房享有樂天超級點數回饋5%的優惠
    • 2.在日本知名美食餐廳刷樂天信用卡消費,享有8折優惠
    • 3.BIC CAMERA購物享免稅8%+6%折扣,加上原先不限通路消費可享1%點數回饋,所以是8%+7%的優惠
    • 4.在日本刷卡免海外手續費
    • 5.JCB卡刷滿50000日幣送利木津車票(價值3100日幣),一張卡片最多可以換二張票卷
    • 6.日本國内商店刷JCB卡消費,累積消費滿20,000日圓(含税)即可參加刷卡抽抽樂活動
    • 7.於東京鐵塔的一樓售票窗口出示JCB信用卡,即免費贈送東京鐵塔大瞭望台(150m)入場券乙張
    • 8.持JCB白金卡/晶緻卡可以免費使用JCB機場貴賓室
    • 9.持JCB卡購買利木津巴士票價8折優惠,一張卡片最多可買四張乘車卷
    • 10.持JCB卡至JCB PLAZA Tokyo(JCB東京貴賓服務中心),即可獲得一組免費Wi-Fi帳號與密碼

國泰世華PLAY(COMBO)悠遊聯名卡  – (使用動機: 生活裡的各式優惠回饋)

  • 這張卡有許多生活/購物/加油/電影/KKBOX優惠, 我覺得算是一個不錯的輔助型信用卡
    • 全台國賓/台中新光影城 天天6折起
    • 悠遊自動加值-享現金回饋3% – 但是條件變嚴格了本來是3000元: 當期帳單新增一般消費NT$5,000(含)以上
    • 網路購物 Apple iTunes/App Store、Google Play、LINE Pay、淘寶網、泰贈點紅利網、Yahoo!奇摩購物中心/超級商城、PChome線上購物/商店街、博客來網路書店刷卡消費,單筆消費滿NT$500,享紅利3倍送
    • 中油加油-享現金回饋0.5% – 記得要每月27日前上網登錄
    • 國際機場外圍免費停車 – 不限次數、每次七天
    • 太平洋SOGO百貨購物優惠
    • 國泰人壽保費1%折扣優惠
    • KKBOX線上音樂會員6折優惠

環球購物中心聯名卡 – (使用動機: 免費停車)

  • 這張只是要去中和環球購物中心, 能夠省下貴森森的停車費: 享當日3小時免費停車乙次

花旗現金回饋白金卡 – (優惠縮水- 不再推薦)

  • 從以前學生時代的花旗透明卡升等, 現金回饋0.5%
  • 福利我發現越來越弱, 連國泰Play悠遊聯名卡都比較強
  • 所以現金回饋卡, 我後來就轉為 元大鑽金卡