Git v2.9.0 釋出

台灣時間  6 / 14 號早上8點左右釋出的新版本,官方 Windows 的 binary release 在中午為止看起來都還停留在 v2.8.4,Mac 甚至還停留在 v2.8.1,而 FreeBSD 的 ports 目前也還沒看到更新,但如果是 Ubuntu 或是基於 Ubuntu 的 GNU/Linux 發行版,只要透過官方的 PPA 就可以直接升上去了。(可以參考 Ubuntu 上的 PPA 整理)

除了每次版本更新都必備的修 bug 以外,這次沒看到明顯跟效能提升有關的更新,背後實作的部份太瑣碎就先不琢磨,列舉依些對使用上有直接影響的更新:

  • Shell 的 auto-completion 更新
    (就是你打命令要按 tab 把剩下字補完的功能)

    • 目前看起來還是缺不少指令,不過有更新總比沒有好 …
  • git rebase -x 現在不需要加 -i 參數就可以直接使用了
    • (rebase 的時候針對每個 commit 跑測試的功能)
    • 省下了一些瑣碎的步驟/時間,畢竟不是每個人都需要 interactive 的互動操作
    • 之前的版本不加 -i 就會不讓你跑,然後出現錯誤訊息:
      • The --exec option must be used with the --interactive option
  • 可以自行指定 hooks 的位置
    (將一些事件和行為進行連結達到自動化的功能)

    • 先前都是放在 .git/hooks,可以指定之後應該某些專案就可以共用 hooks 了,或許可能就會有人性質相同專案會用到的 hooks 也可以打包成專案釋出?複雜一點的話就是偵測專案性質用比較 general 的方式跑簡單的檢查,syntax check / lint 之類的
  • git commit 現在會吃 verbose 的設定,就不用在命令後面加參數了
    (顯示更詳細的資訊輸出)

  • git clone 現在可以直接 shallow clone submodule 了
    (clone 的時候不要 clone 整個改版歷史,可以有效減少空間跟頻寬消耗跟提升速度)
  • git diff / log 預設啟用自動偵測檔名變更
    (區別 “檔名變更” 和 “刪除一個舊檔案再寫一個新檔案” 的不同)

    • 可以透過設定來停用
  • 預設禁止沒有共同祖先的分支合併
    • 可以避免一些錯誤的操作
  • git log 的 commit message 縮排預設用 4 個 spaces 來展開 tab
    • 不知道是不是我沒讀懂或哪邊有問題,目前看起來還是8個空白的長度
    • 可以透過參數來取消這功能

繼續閱讀

cdnjs git repositories visualization using gource

Gource is a famous version control visualization tool, supports git, svn, hgbzr and cvs2cl, I tried to use gource to visualize the CDNJS development history, and here are the videos I uploaded to youtube.

CDNJS main repository:
(https://github.com/cdnjs/cdnjs)

CDNJS new-website repository:
(https://github.com/cdnjs/new-website)

繼續閱讀

Visual Studio(2012)使用nuGet管理套件,搭配版本控制系統的處理

有些不相關程式本身的東西習慣上不會送進版本控制系統

在Visual Studio裡面有個還滿好用的套件管理機制 – NuGet

透過NuGet可以很方便的安裝各種套件,如 nunit,而裝進來的套件會被放在專案目錄底下的packages資料夾,如果這個目錄沒有進版本控制系統,重新拉一份專案repository則會遇到相關檔案遺失的問題

可以透過以下步驟解決這問題

1.在Visual Studio選項裡面啟用Allow NuGet to download missing packages during build
VisualStudio2012-options- packages
(這個設定是跟著開發環境的)

2.在專案上面啟用 Enable NuGet Package Restore
VisualStudio2012-project-menu
(這個設定是跟著專案的)

然後專案的csproj, sln裡面會加上對應的設定,專案底下還會多一個.nuget資料夾,裡面會有binary的nuget以及nuget的設定,把這些東西加進專案repositry送個commit,之後build project的時候就會自動把需要的packages拉下來了