使用 git submodule 管理 project 所需的其他模組

故事是這樣子的,最近在寫一些分析資料的程式,用的是 python 跟 numpy。
一開始改寫的時候,發現一開始 load 資料的地方,Python 實在太慢了,載入 20000 筆資料耗時超過 150 秒,後來決定用 C++ 改寫載入數據的部分,同時利用別人寫好的 cnpy 這個 project,寫出 numpy 檔案作分析,結果載入速度竟然一口氣降到 4.5s,加速 15 dB,太可怕了(yay。
為了要使用 cnpy 這個 project,順手研究了一下要如何給使用 git submodule,這篇文章就做個介紹。

...

 January 25, 2018 |    git  |    git  | 2 min  |  YodaLee

Git 教學影片系列

故事是這樣子的,自己大概三四年前開始使用git,一路用到現在,對 git 相關的功能算是相當熟悉,有時也會負責教其他人使用 git,自己的 blog 上其實也留了不少 git 相關的文章
大約兩個禮拜前突發奇想,反正都要教,乾脆就錄個影片,以後只要貼影片給別人看,不只教認識的,還能教虛擬世界中「沉默的多數」(誤),想著想著稍微規劃了一下,好像還真的有點模樣,於是就開始了我變身網(ㄈㄟˊ)紅(ㄓㄞˊ)的第一步。

...

 December 31, 2017 |    git  |    git , tutorial  | 1 min  |  YodaLee

使用 git-svn 和 svn 遠端協同開發

最近因為跟人協作,共同開了一個版本控制資料夾。
對方使用的版本控制是 svn ,而我則是用 git,重新學 svn 實在太麻煩了,有沒有一個好的解決方案呢?經過強者我同學 AZ 大神跟 qcl 大神的推薦,決定使用 git-svn 來解決。

...

 July 3, 2017 |    git  |    git , svn  | 2 min  |  YodaLee

使用 git patch 來搬移工作內容

前幾天在改一個專案,因為筆電的設備不夠強大,只能到桌電上開發,兩邊都是開發機,也就沒有用remote 的方式來同步專案。今天,要把那時候的commit 搬回筆電,只好使用git 的patch 移動工作內容,這裡記錄一下整體工作流程和解決衝突的方法。

...

 March 9, 2017 |    git  |    git , patch  | 2 min  |  YodaLee

如何在Pull request 被mergerevert 後再送 pull request

自從換了智慧型手機,又搭配1.5G的網路之後,用手機上網的機會大增,在用Firefox 刷Facebook 的時候,很容易跑出廣告來,於是發想把「在Yahoo 台灣大殺四方驚動萬教的人生溫拿勝利組強者我同學 qcl 大神」所寫的神專案QClean 移植到Firefox Mobile 上面。

...

 December 31, 2016 |    git  |    git  | 1 min  |  YodaLee

使用git hook在commit 前進行unittest

使用 git 做為版本控制系統已經有一段時間了,最近在寫Facebook message viewer 的時候,就想到能不能在本地端建一個 CI,每次 git commit 的時候都會時自動執行寫好的測試?
查了一下就查到這一個網頁 裡面有相關的教學:
在這裡記錄一下相關的設定。

...

 December 30, 2016 |    git  |    git  | 1 min  |  YodaLee

使用git rebase 進行Pull Request 檢測

故事是這樣子的,自從我被加到Qucs project的專案小組,原本的管理員又因為博班進到最忙的時間開始比較少管事,變成我在管專案的Pull Request(PR,拉取要求)。
其實管就管,反正這個project 沒人鳥,平常也沒什麼PR進來;不過有PR進來的時候,還是要做適當的檢查,以下提一下幾個檢查PR的流程:

...

 November 24, 2014 |    git  |    git  | 1 min  |  YodaLee

使用git bisect 搜尋災難發生點

之前因為強者我同學阿蹦大神的關係,接觸了neovim這個大型專案,光星星數就有9300多顆,是我星星最多的project的9300多倍lol。
雖然說看了幾個issue,大部分都插不上話--討論的層次太高了,偶爾有個好像比較看得懂的,trace下去之後提出解法,沒想到是個不徹底的解法,pull request就被拒絕了TAT,要參加這個超過9000顆星星的project,像我這種花盆果然還是「垃圾請再加油」

雖然說是這樣,但我還是趁這個機會,研究一下如何使用 git bisect 在project裡面找到洞洞。
基本上project無論用了多少test,多少還是跟我的腦袋一樣有一些洞,要如何找到洞洞就是一門學問了,git 提供了git bisect這個指令幫助開發者找到出錯的地方

...

 August 27, 2014 |    git  |    git  | 2 min  |  YodaLee

Git-flow 簡介

最近因為工作的關係接觸了git-flow相關的內容,在這裡就介紹一下git-flow的相關概念。基本上git-flow就是一個git 的擴展,把一群git 指令集合在一起,更方便管理人的操控,如果去看它的執行檔,其實就是一個shell script,所以使用git-flow時也可以用git 指令,同時只要熟練git的話,就算不用git-flow 也能操作自如。

我認為git-flow最重要的還是背後那個分枝的規則,我覺得學起這個規則就好。

...

 August 22, 2014 |    git  |    git , gitflow  | 1 min  |  YodaLee

自己犯的錯自己刪,使用git-gc

最近我修改了我的ADS2Origin,因為使用者回饋表示,有時候資料區塊長度不同是無可避免的,比如說遇到loadpull的圖形,因此我把輸出改為csv格式,程式只會提醒使用者資料區塊長度不同,而不會自動切掉長度過長的部分;這個東西其實也不難改,反正資料就在那裡,只是改一下寫出的方式。
倒是寫這個讓我想起data mining的名言:「做data mining的,用了70%的時間在處理資料,30%的時間在靠北處理資料」

與此同時,很高興6/25號晚上我又推了一位同學當使用者,使用者人數++。
為了方便使用者,把下載連結 放在這裡讓大家下載。


另外,最近我發現到一個問題,因為我的git project把windows下的執行檔都包進去,git又是每記錄一個版本就把檔案都複製一份,看一下我的git repository已經14 MB(唔…跟某些project用幾十G在算的比起來其實還是很小), 不過恁爸保留exe的commit好像也沒啥用,就趁這個機會研究一下怎麼刪掉舊記錄裡面的執行檔。
不能用git rm ,這是不夠的,git歷史資料還是會保留著,因此需要一些特別的方法,主要的參考資料是 ProGit 的 10.7 的 Git-Internals-Maintenance-and-Data-Recovery , 還有一篇 gitready 的文章,其實大部分的內容它們都講完了,我只是照做而已。

...

 June 28, 2014 |    git  |    git  | 2 min  |  YodaLee