2014年1月24日

使用 git-svn 工具管理 SVN 專案

只要熟悉 Git 版本控制,就很難再回到過去...SVN;不是 SVN 不好,只是 Git 和 SVN 本是不同世代的工具,如果硬是要比較,就太為難 SVN 了。

不過在開發專案時,難免還是會碰到,許多專案必須使用  SVN 的困境,還好先進的 Git 提供 git-svn 的橋接工具,讓你可以在自己的電腦上使用 Git 管理,但是專案的遠端版本管理仍繼續維持 SVN 伺服器。

我們就別談 Git 哪邊比 SVN 好,先來看看使用 git-svn 有哪些好處吧?
  • 使用 Git 做 diff / merge 比較輕鬆容易又方便
  • 在 Local 端可以多次 Commit,不必每次的 Commit 都要 Push 到伺服器
  • 離線狀態仍然可以繼續 Commit... Commit...
  • 和支援 Git 的 IDE 完美合體
  • 在 Local 端可以輕鬆開 Branch 做實驗性的程式修改
  • 除了發佈到一份 SVN Repository,還可以同時 Push 到其他"多份" Git Repository 分散式保存(備份!)
  • ... 以及更多的好處請自行體驗。

以下是我自己使用 git-svn 的 SOP,目前用了兩個月過程還算沒啥大問題。

新建專案

在建立 Local Repository 的時候,建議是以 SVN 為主,利用 git svn 從 SVN 主機取出程式碼。

git svn clone https://SVNSERVER/svn/trunk/ git-svn-test-only

如果是已經很老的陳年 Repository,上面的指令可能執行到天荒地老還沒跑完,可以指定只取出最後的 Revision。

git svn clone -r HEAD https://SVNSERVER/svn/trunk/ git-svn-test-only

進入專案資料夾(不解釋)。

cd git-svn-test-only

新建一個檔案(測試ONLY)。

echo hello > readme.md

加入新檔案(測試ONLY)。

git add readme.md

建立一個新的 Commit(只是在 Local 做 Commit,不會送出給 Server,事後還可以反悔)。

git commit -a -m 'first commit'

每次 Commit 到 SVN 之前,要先做 rebase 保平安。

git svn rebase

看到以下的訊息就可以鬆一口氣。

Current branch master is up to date.

放心地將 Commit 發送到 SVN 伺服器,這個指令會真的做 Push 喔(不能反悔)!!!

git svn dcommit

增加遠端 Git 伺服器

只靠 SVN 伺服器,萬一哪天好死不死 Local 資料誤刪,然後伺服器也剛好掛點,程式碼就會從地球上消失。

增加多個遠端 Git 伺服器,除了在大型的多團隊協作專案可能會有需要外,也可以拿來當專案程式碼的異地備援,求個永保安康。

以 GitHub 建立的 Git Repository 為例,利用 git remote add 加入專案中。

git remote add github git@github.com:GITUSER/git-svn-test-only.git

先從遠端取得已經存在的資料(如果有)。

git fetch github

先在 Local 端做一次 Merge 合併 SVN 和 Git Repository 兩邊的檔案。

git merge github/master

將異動提交給 SVN。

git svn rebase

git svn dcommit

也送一份到 Git。

git push github master

每次改程式的事後指令

就像平常使用 Git 一樣加入新增的檔案。

git add src/*

就像平常使用 Git 一樣先做 Commit。

git commit -a -m 'some comments'

記得先做 svn rebase。

git svn rebase

將 Commit(s) 送給 SVN 伺服器。

git svn dcommit

將 Commit(s) 送給 Git 伺服器。

git push github master

OpenJDK - Java 7 Update 60 Early Access Release (Developer Preview)

jdk7.java.net

OpenJDK 計劃目前已經提供 Solaris, Linux, Mac OS X 或 Windows 不同作業系統的安裝程式,開發者可以更輕鬆獲得最新---尚未正式發佈的 JDK 版本。

以目前的 JDK 7 版本來說,Oracle 正式發佈的版本到 Update 51,但是在 OpenJDK 的下載頁面,已經可以取得 Update 60 build03 版本。

Download Latest Early Access JDK 7

https://jdk7.java.net/download.html

Download Java SE 7 Development Kit form Oracle

http://www.oracle.com/technetwork/java/javase/downloads/

2014年1月3日

自動化管理 RDS 資料庫連線IP授權,使用 Amazon Command Line Interface

這份範例說明使用 AWS 的 CLI 指令工具,可以自動管理 RDS 連線的來源 IP 存取授權。考慮到出外或使用行動上網分享器時,需要自動偵測實際對外的 Public IP,所以這個範例也加上利用 curl + ifconfig.me 的說明,在分享器後方也能自動辨識出正確的 IP 位址。

安裝 AWS Command Line Interface (AWSCLI)

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo python ez_setup.py

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py

pip install awscli

設定 AWS Credentials

$ aws configure
AWS Access Key ID [****************]:
AWS Secret Access Key [****************]:
Default region name [southeast]: ap-southeast-1
Default output format [None]:


增加IP授權

aws rds authorize-db-security-group-ingress --db-security-group-name GROUP --cidrip `curl ifconfig.me/ip`/32

解除IP授權

aws rds revoke-db-security-group-ingress --db-security-group-name GROUP --cidrip `curl ifconfig.me/ip`/32

2014年1月1日

使用 Markdown 寫文件、寫書、做筆記的經驗分享

上個月分享一篇介紹 Markdown 線上編輯器的文章,有不少瀏覽點閱次數,表示還是不少朋友關注這議題,所以想再多談一些使用經驗。

Markdown 目的是易讀易寫,讓純文字文件的撰寫有個基本的規範。

有些網站使用 Markdown 貼文,像是 GitHub 或 StackOverflow,為了更多功能就加上很多語法。

但是原始的 Markdown 很單純,能做到的大概就是標題、原始碼區塊、粗體、斜體、引言、項目符號、圖片及超連結。

Markdown Syntax http://markdown.tw/

任何一款文字編輯器,都可以拿來編輯 Markdown,像是最近很紅的 Sublime Text。


但是畢竟大量的敘述文字和程式碼不一樣,在撰寫文件的過程中,如果不能「即時預覽」是件痛苦的事情。

Sublime 有許多 Markdown 延伸套件,可以稍微改善文字編輯的問題,例如引言和標題會有較好的視覺效果。


但是目前最好用的 Markdown 編輯器,個人認為還是 Mou.app (Mac OS X only)好用,它可以在右邊即時預覽轉成 HTML 的文件,編輯器和預覽文件的佈景也可以切換或自訂。


使用 Markdown 寫文件,只要利用 GitHub 建立 Repository,就可以輕鬆做到版本控管,可以更放心刪改文字,從 Diff 結果很容易就能看出異動。


使用 GitHub 管理 Markdown 文件,也同時得到 HTML 版本的預覽,相當方便隨時用平板或手機檢視閱讀文件。


Markdown 文件的資料夾,保留了圖片原始檔案,比起夾帶在 PDF 或 WORD 檔之中更容易處理,並且圖片的語法也明確指出使用哪個圖檔。

Markdown 只是「原始文件」,我們可以利用 pandoc 工具將它轉成其他格式。

Markdown to HTML5

pandoc -f markdown -t html5 FILENAME.md -o FILENAME.html

如果使用 Wordpress 或 Blogger 網誌發表文章,配合「pbcopy(Mac OS X only)」,就可以把轉換格式的輸出直接儲存到剪貼簿。

pandoc -f markdown -t html5 FILENAME.md | pbcopy

如果要把 Markdown 文件製作成 PDF 或 EPUB 電子書,也可以利用 pandoc 做到。

Markdown to EPUB3

pandoc -f markdown -t epub3 FILENAME.md -o FILENAME.epub

Markdown to PDF

pandoc --template=default.latex --latex-engine=xelatex -V fontsize=13pt FILENAME.md -o FILENAME.pdf


lyhcode by lyhcode
歡迎轉載,請務必註明出處!