SourceTree 使用 SSH 連結 GitHub 與載入 SSH Key 設定摘要

GitHub 為了安全性議題,已從 2021/08/13 強制要求用戶登入 (authentation) 機制只能採用 SSH 或 Persoan access token,傳統使用賬號/密碼登入方式已不再支援。可參考:「Token authentication requirements for Git operations」。

關於 PAT (Personal Access Token) 具體相關操作,可參考官網文件:「Creating a personal access token」。但該方式還要做相關的權限設定,實在麻煩,所以使用 SSH 登入只要做一次設定相關方便許多。關於 GitHub 使用 SSH 相關設定,可參考國外這篇文章,包括基本原理都有說明,值得參考收藏:「How to Generate SSH Keys for GitHub」。

已安裝好原生 Git,並使用內建的 Bash 終端機,執行「ssh-keygen」命令,如在 Win10 環境下,即會在「/Users/login-account/.ssh」資料夾內 (若為 Linux 則為 ~/.ssh) 產生公/私鑰,然後再把公鑰內容複製貼上至 Github → Setting → SSH and GPG Keys 內所新增的 Key 內容即可,就可以使用 SSH 連線,相當簡單。

如果只使用原生 Git Bash 透過 SSH 連線 Clone 遠端 GitHub 儲庫就可以正常存取了,但是若透過 SourceTree 卻需要另一番設定方可 (而且還有些繁瑣),主要原因是 SourceTree 目前版本只支援使用 PuTTY 格式所儲存的 Key,所以要嘛先透過已有安裝的 PuTTY (或 WinSCP) 設定好 SSH,否則就需在該應用程式內執行下述設定。

閱讀全文 »

關於 GitBook 平台的改版與 GitLab 替代的考量

GitBook 有兩種含意:一為 GitBook 文件平台;另一則為 採以 Node.js 所開發的命令列工具,用以製作基於 Git/Markdown 所產出精美的電子書文件。

就在今年四月底,Gitbook 平台 (Github 旗下之一),推出所謂的 V2 大改版,改版幅度之大,連帶影響到既有廣大的 V1 開源用戶,預計今年10月左右就要關閉 V1 的使用,強制改版至 V2。但更為難受的是它的 售價策略,Free 方案竟只縮減為只能創建一個「space」,也就是只能創建一本電子書;而付費方案最低則為每個月要支付 7美金 (5 user)!

這肯定會引發一大波開源用戶的出走潮!畢竟絕大多用戶都是基於開源分享的精神將自己的創作 (程式碼/文件) 置於 Github/GitBook 的。 (關於這次 GitBook 大改版,可參考對岸這篇:如何看待 GitBook 的改版?)

所以,要製作開源的電子書在 GitBook 平台短期內 (預期這風波會造成大量用戶的質疑抱怨)並非理想的方案。退而求其次,尋求替代可提供免費文件的平台,並基於 gitbook 工具所製作的電子書,那就非 GitLab 平台莫屬!

GitLab 也有兩種含意:一為 GitLab Inc. 所提供幾乎與 Github 一樣的介面與服務;另一則為該家公司所釋放出基於網路的Git倉庫管理工具,且具有wiki和issue跟蹤功能,可方便私人建構所屬的私有 Git 儲庫平台。

而且 GitLab Inc. 背後可是有強大的金主:Google!所以也不用擔心會有突然關閉或如 Github 那樣不可思議的收費方案。 (額,Github 被微軟收購的,這應該大家都知道吧~。)

要在 GitLab 平台發佈基於 gitbook 工具所製作的電子書並不困難,官方也提供了一個 gitbook 儲庫 (repository) 範本 (可參考它所產出的 靜態文件網頁),可依照該儲庫的 README 說明並 fork 該儲庫即可開始建構所屬自己的電子書。

嗯,其實我個人不太喜歡使用 Fork 的方式當成自己專案的起點,下一篇就來分享下如何在 GitLab 新增專案並配置成可被持續發佈的 GitBook 文件網站。 (其實步驟比想像得還簡單)

{書稿} 建置 Android 開發環境-02

安裝與設定 Eclipse EGit

什麼是 EGit?

EGit 是 Eclipse 的一個團隊提供者 (team provider)套件,它可以讓開發人員直接在 Eclipse IDE 環境內使用 Git 版本控制系統。

EGit 是基於 JGit 套件 (library)所發展,而 JGit 係以 Java 來實現 Git 完整功能的輕量級 (lighweight)套件庫。

安裝 EGit

自 Eclipse 4.2 以後版本,EGit 已成為核心組件,並不需要另行安裝;而若使用 Eclipse 較舊版本,則 EGit 是被視為外掛 (plug-in),可以透過 Eclipse 安裝管理員 (installation manager)安裝。

在 Eclipse 選單上點選【Help】→【Install New Software...】,在出現的對話框內,輸入下列 URL 位址: http://download.eclipse.org/egit/updates

然後按照對話框提示的訊息完成安裝。

圖、安裝 EGit 外掛

圖、安裝 EGit 外掛

閱讀全文 »

{書稿} 建置 Android 開發環境-01

安裝 Android 開發工具

Android App 開發環境只要設置下列兩個開發套件即可:

  • Java SE (Standard Edition)。
  • ADT (Android Development Tools) Bundle。

Java SE

Android App 是以 Java 語言撰寫的,自然需先下載 JDK (Java Development Kit) 的編譯環境。

請至 https://developer.android.com/sdk/index.html 下載 JDK 最新版本;注意下所對應的作業系統、以及 32或64 位元的版本檔案,然後下載直接執行安裝即可。

本書為 Windows 7 x64 的開發環境,最新的穩定版本為 JDK 7,所下載的參考檔案名稱為 jdk-7u51-windows-x64.exe

ADT Bundle

Google 已為 Android 開發人員準備了一套完整的開發套件-ADT Bundle,可讓開發人員不用再各別安裝與設定開發環境,降低 App 開發的門檻。

關於 Android 開發工具,可參考其開發人員首頁 https://developer.android.com/sdk/index.html 獲取更多相關資訊。

ADT Bundle 包含了下列幾個開發套件:

  • Eclipse + ADT plugin。
  • Android SDK Tools。
  • Android Platform-tools。
  • The latest Android platform。
  • The latest Android system image for the emulator。
下載與設定 ADT Bundle

在上述的網頁,點選【Download】下載取得 SDK ADT Bundle for Windows (32/64 位元)。

將所下載的壓縮檔 (檔名為 adt-bundle-.zip) 解壓縮至合適的位置內並可更名較簡短的資料夾名稱 (e.g. C:\adt-bundle-windows)。

開啟資料夾內 /eclipse/ 目錄並執行 eclipse.exe,設定工作區 (workspace)專案儲存目錄 (e.g. C:\Projects\workspace),如此即完成 ADT 的初始配置。

{書稿} 安裝與設定 Git for Windows

安裝與設定 Git

Note:
本書關於 Git 與 Android 開環環境是假設建基在 Windows-based (e.g. Windows 7/8)的系統下;如為 Linux (e.g. Ununtu/Fedora)、Mac 等其它系統,則可參考該系統相關的安裝指引。

在 Windows 環境下使用 Git,必須先安裝核心組件-msysGit。安裝完成後即可在命令列模式輸入 Git 指令,或是利用它內建的圖形界面操作 Git。

本書所有案例操作會同時以命令列 (command promprt)與圖形使用者界面 (GUI, Graphic User Interface)兩種模式,來說明如何執行 Git 操作。

命令列模式即是開啟「命令提示字元」視窗,並輸入 Git 指令;而圖形界面則以整合在 Eclipse 內的 eGit[1] 來執行 Git 。

Note:
雖然安裝完 msysGit 即有圖形界面,但是它作得很粗糙;所以若不是開發 Eclipse 並使用 eGit 的 Windows 使用者,會選擇另一套更友善的圖形使用界面-TortoiseGit。

不過要注意,TortoiseGit 只是 Git 的一種圖形前導 (frontend)界面,所以仍須先安裝完 msysGit 才能執行 Git 指令。

無論 msysGit、TortoiseGit、eGit,甚或其它第三方 Git Client,彼此之間並不會有任何衝突,都可以對同一 Git 儲庫執行 Git 指令。與其它版本控制系統不一樣的就是,所有的 Git Client 其實僅是 Git 原生組件 (component)的「包裹 (wrapper)」而以,它們其實都是操作同樣的 Git 核心組件。

[1] eGit 是已內建於 Eclipse 的 Git 套件,它可以透過 Eclipse 的界面直接操作 Git 指令。下一節會說明如何設定 eGit 組態。

閱讀全文 »

HowTo-Redmine 整合 Git/GitHub

目的:

讓 Redmine 可以瀏覽位於遠端 Git Server 如 GitHub 儲庫每一次的提交 (commit)歷史資訊,並能達成 Redmine 的 Issue 與 Git Commit 關聯。

說明:

Redmine 僅能讀取位於 local 端的儲庫 (repository)內容,卻沒有支援透過 Git 協定連結位於遠端 Git Server 上的儲庫。

主要解決方案就是先在 local 端建立對遠端儲庫的鏡射 (mirror),然後透過以下三種方式之一:

  1. 建立批次檔,內容為可以提取更新遠端的儲庫內容 (ex. git fetch -q --all)並設定定期執行作業 (ex. cron)。可以參考此篇-HowTo keep in sync your git repository for redmine
  2. 在 GitHub 上所欲讀取的儲庫專案,在其設定 → Service Hooks 上啟動 Redmine,輸入包括 Remine 所在 Url、專案名稱、API Keys 等欄位資訊,並勾選相關執行選項。可以參考此篇-HowTo simply keep Redmine in sync with GitHub
  3. 在 Redmine 所在位置安裝 Redmine GitHub Hook plugin,並於 GitHub 上該儲庫專案新增一個 WebHook URL,填入 Remine 專案所在 Url 位置,由 GitHub 連結 Remine。

第一種方式最簡單,但並不自然,因為 Remine 所在機器需定期執行遠端儲庫更新作業,即使遠端儲庫內容並未更新;第二與第三種方式是屬於 publish-observe 合理的作法,當遠端儲庫 (GitHub)的內容被更新時,它會透過 service hook (擔任 event-handler)轉呼叫位於 Redmine local 端的儲庫來更新內容。

第二種方式的 service hook 是由 GitHub 這邊所提供的,Remine 並不需要安裝額外的 plugin。但我設定嘗試了好幾次卻無法達成更新 Redmine 所在儲庫內容,所以我這裡是採用第三種方式,由 Redmine 這裡提供 github hook plugin,再至 Github 設定 WebHook Url,透過 Web Service 達成兩端的同步。

實作步驟 -

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal