新書廣告「為你自己學Git」

Disclosure:我跑去找作者簽名,然後被戳說要介紹廣告一下 XDDD

這是本講 Git 的書,翻內容後的感覺... 定位差不多在入門使用者與中階使用者。先引用作者在 Twitter 的 tweet:

天瓏掛第一,然後出版社通知要二刷了,應該是賣的還不錯 XDDD

書的章節可以參考「天瓏網路書店-為你自己學Git」這邊,內容是以 Command Line 為主,對於真的要把 Git 用好蠻有幫助的。除此之外,實務上常見的問題都有提到 (像是搞爛東西後可能的解法),也講了不少冷知識,對於理解 Git 內怎麼運作會有幫助...

唯一覺得奇怪的地方應該是在最後兩章,講 GitHub 與 Git Flow (也就是「A successful Git branching model」這邊提出來的方法),反而不是 GitHub Flow... 雖然在 GitHub 上也可以走 Git Flow 啦。

Git 2.8 的平行下載 submodule 加速

Git 推出新版的時候,幾家 Git Hosting 都會撰文寫一些重要的進展,像是 GitHub 這次的內容:「Git 2.8 has been released」。

GitHub 這次說明平行下載的範例直接清楚表示出來功能:

git fetch --recurse-submodules --jobs=4

用 Google 找了一個 .gitmodules 裡面有很多筆的 repository 測了一下,的確是快了不少...

diff-so-fancy 工具

Hacker News Daily 上看到的工具:「diff-so-fancy」。

光是從 screenshot 仔細看,會發現漏掉了一些 minus 與 plus 的資訊 (中間有一段應該要顯示 -document 與 +this.element, false 的部份,只顯示了 plus 的部份),有可能是 bug 也有可能是 feature。

另外對於已經讀習慣 diff 輸出結果的人,反而要另外學習,至於這個 learning curve 值不值得就見仁見智了...

Git 上各種 Undo 的技巧

GitHub 的「How to undo (almost) anything with Git」這篇文章介紹了 Git 上各種 undo 的方式。

主要先分成「已經 push 出去」與「還沒 push 出去」兩種,然後針對 branch 再說一次。

這份沒有 cover 到所有的方式,但常用的都在裡面提到了,可以先 bookmark 下來,需要用的時候練個幾次就會背起來了。

Facebook 的主程式碼放在 Git?

在一月時,Facebook 官方的 Engineering Blog 上提到 Facebook 使用 Mercurial 遇到的問題,以及所作的努力「Scaling Mercurial at Facebook」:

Facebook's main source repository is enormous--many times larger than even the Linux kernel, which checked in at 17 million lines of code and 44,000 files in 2013.

...

Instead, we chose to improve Mercurial. Mercurial is a distributed source control system similar to Git, with many equivalent features.

當時的解讀是 Facebook 把 main source repository 放到 Mercurial 上。

以 Facebook 的規模以及遇到的問題,是有能力直接改變世界的,用 Mercurial 或是 Git 都算是合理的選擇。

不過這幾天在 Twitter 上看到:

這讓人錯亂了啊 XDDD

把 Git commit 切開

在「Split a commit in two with Git」這邊看到有趣的方法:

git rebase -i <oldsha1>
# mark the expected commit as `edit` (replace pick in front of the line), save a close
git reset HEAD^
git add ...
git commit -m "First part"
git add ...
git commit -m "Second part"
git rebase --continue

squash 是把多個 commit 合起來,這個方法是拆開。還沒有 push 出去,需要整理時應該會用到...

各種 credential 儲存的方式 (像是連到資料庫的密碼)

John Resig (現在在 Khan Academy) 在月初的時候發表了「Keeping Passwords in Source Control」討論要怎麼儲存 credential。

這不只是開發者的問題而已,這跟 code deploy 機制也很有關。目前沒有完美的方案,不同的解法都是在不同的環境與限制下而誕生出的產物。

FreeBSD ports 將從 CVS 轉移到 Subversion 上...

有陣子的新聞了:「[FreeBSD-Ports-Announce] [HEADS UP] Ports tree migration to Subversion」。

預定是 7/14 要轉換,轉換完成後仍然會有程式把 Subversion repository 的變更同步到 CVS 上,所以本來用 csupcvsup 的人仍然可以取得更新。

當初選 Subversion 的原因是什麼啊?又是 GPL license issue 嗎?