Archive for the git Category

Note: To clone special branch for Git operation

Posted in git, SCM(Software Configuration Management) with tags on 2016 年 01 月 30 日 by Kun-Yi

起因是最近有個新案子在跑 用的是Yocto/OE 的Build environments 他有一個設計就是針對某的vendors 的BSP 可以將patch 透過寫script 方式在Buildtime時一個一個打上去, 也可以自己透過SCM tools 去拉特定的 revision,一般的建議是用patch 一個一個打,可是我覺的這樣很蠢呀! 尤其是kernel 明明廠商就是有git repo. 可以拉了,當然因為你沒辦法推回去 但是只要自己clone一份就好。

但是事情沒有我這個笨人想的那樣簡單,因為目前是多方合作的案子,所以由客戶方在Bitbucket 上開了一個 team group 共同協作,當我好不容易把kernel repo 搬到bitbucket 上時,竟然發現Bitbucket 出現該repo. 超過2GB 所以只能讀不能寫的訊息,按照線上說明去做了一些步驟如透過BFG去過濾大於某一個大小的檔案等方法,但是都一無所獲。不由得想到前幾天看到的一個方法

  1. git init #initialized a empty repository
  2. git remote add -t <branch> <name> <url>     # track a special branch
    or git remote add -m <brancn> <name> <url> # track a special branch to master
  3. git checkout

經過測試後該 repo 果然可以有效降為只剩下 1GB 大小 雖然 Bitbucket 還是會警告 但是最少還是可以 commit 到 2GB 的狀況, 我個人是覺的應該不會出現被我commit到出現 repository 增長到 2GB 的慘事才是

update: 剛不知道為啥 又不成功 但是在 git官網看到 doc 有寫 下面這段

Imitate git clone but track only selected branches

$ mkdir project.git
$ cd project.git
$ git init
$ git remote add -f -t master -m master origin git://example.com/git.git/
$ git merge origin

Note: Install new git version(v1.8.4) from source code on Linux

Posted in git, SCM(Software Configuration Management) with tags on 2013 年 09 月 20 日 by Kun-Yi

Dowload install script from my dropbox

run the script, “cat git | sudo bash"

check git version “git –version"

update: on ubuntu 12.04 , You need install libcurl4-openssl-dev package before install/compiling

WorkNote: git-daemon-run & add remote repository to fetch

Posted in git, Works on 2012 年 05 月 29 日 by Kun-Yi

Host A, IP:192.168.10.4 ( fetch remote repository )
Host B, IP:192.168.10.5 ( remote repository, have a branch “uPad" )

First on Host B install git-daemon-run service (on Ubuntu/Debian) and follow the below steps.

read /usr/share/doc/git-daemon-run/README.Debian document, the article describe how do to setup a git daemon on your computer.

1. sudo ln -s ~/kernel/android-3.0/.git /var/cache/git/android-3.0.git  # create a syminks for git-daemon-run
2. touch ~/kernel/android-3.0/.git/git-daemon-export-ok  # create a tag file for git-daemon-run
3. su sv restart git-deamon  # restart git-deamon-run service

On Host A fetch the git repository step

5. git remote add MyRepo git://192.168.10.5/git/android-3.0.git
6. git fetch MyRepo uPad:uPad

Results:

remote: Counting objects: 15, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 7), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From git://192.168.10.5/git/android-3.0
* [new branch] uPad -> uPad

Note: git cherry-pick, blame, and log window

Posted in git, SCM(Software Configuration Management) on 2011 年 01 月 22 日 by Kun-Yi

git cherry-pick [-n]

用來merge 某個branch 內的commit, 或是透過 –n 選項可以分次選擇commit 先進到stash area 然後一次merge, the below picture show how to pick up 2 commits to merge into current work branch

image

git blame

用來看單檔內, 每一行是誰修改commit的, 下圖來自 TortoiseGitBlame (Built in TortoiseGit 1.6.3.0)

image

Log window

Create a new branch(BetaTest) then merge something to verify an idea in below picture

image

推: TortoiseGit/MsysGit

Posted in git, SCM(Software Configuration Management) on 2010 年 05 月 22 日 by Kun-Yi

在幾年前曾經尋覓過 SCM, 那時最終選擇了 Subversion, 原因是在Windows 環境下相對成熟, 有Server 可run, 有TortoiseSvn這個GUI, 可跑.因此在那段從事Windows CE/Mobile 開發工作階段, 選擇了SVN, 另一個原因是合作的同事, 因為看到合作的公司用SVN 管理, 覺的是一個先進的工具, 接受度也大增, 不過遺憾的是, 可能覺的太先進, 它自己commit code 的機率很低, 一直很擔心把整個 code base 搞爛, 所以大多的 commit 動作還是由我來完成! 不過這是一件不用擔心的事情, 由其在2 ~ 3人的teamwork 中, 只要Branch 開了, 不管改了啥就commit 就對了! 真的爛掉也可以容易的使用revert 去 Rollback 回到原本的起點! 不然用 SCM 是為了啥? 為的就是可以惡搞完可以快速的回到正常狀態!

在用了一陣子之後, 有遇過一些 svn 的缺點, 如集中式的Repository 管理, Branch 需要的空間時間都不少, 由其當專案的檔案日趨增多, 這個現像愈趨惡化, 所以後來有嘗試過 Mercurial(Hg)與Git , 在 2008 年嘗試的時後, 個人覺的那時的MsysGit 雖然可用, 但是還是沒有TortoiseSVN 成熟, 而且並未有完善的GUI, 而Mercurial 那時, 相對於Git, 因為它用 Python 開發, 在Windows 上的移植相對簡單, 所以功能完整多了, 但是也因為沒有適當的GUI 而放棄!(那時已經有了TortoiseHg, 但是還不成熟!)

最近因為轉換工作, 這個工作一樣是coding, 但是同樣的是一個沒有用SCM的公司!同事們的Solution 就是Coding 完, 寫History/Work Log, 然後把 codebase compress 成一個一個的package, 不過因為所有的專案都是單人獨立完成, 所以這樣進行實際上, 除了麻煩點也沒啥缺點! 這也是該工作在台灣的普遍現象!

但是人懶沒藥醫的我, 實在是懶的Coding 又要整理 Log, 就又開始了新一輪的嘗試SCM, 這次直接嘗試了TortoiseGit, 驚喜的發現 TortoiseGit/MsysGit 的組合對我來說已經夠成熟了, 除了Msysgit 始終不支援的git-svn, 整個MsysGit可以說已經到了穩定階段, 搭配TortoiseGit 在Windows 上已經幾乎可以取代了TortoiseSVN了!

不過使用TortoiseGit 有時還是要配合GitGui 一起服用, 不過大多數TortoiseGit 已經實作的項目, 絕對比用GitGui 簡單, 也不用查詢 git command 怎樣下(當然如果能清楚 command怎樣下的話, 用起來更是如虎添翼!)

不過比起Subversion 來說, Git 的Learning curve 真的還是比較陡峭一點點! 不過再經過這一週的學習/使用後, 若是有人問我現在哪各SCM 在Windows上, 最方便好用, 我可以毫不猶豫的說是MsysGit/TortoiseGit 的組合!

Update: Msysgit 已經可以 用 git svn 的command 了, 我在windows上用MsysGit 的Bash 情況下, 去拉 EDK II/coreboot 等 svn 的repository 都是成功的! 在TortoiseGit 在clone repository 時也有對應的選項, 不過因為 ssh的關係 我還是選用 bash 的command mode去執行!