Qt官方從4.5就開始開放源碼庫(kù), 并鼓勵(lì)社區(qū)參與貢獻(xiàn)Qt的開發(fā)。 這個(gè)消息十分振奮人心, 但似乎周圍的developer還沒有人真正去做些什么,大家只是觀望以及再觀望,似乎是在等待第一個(gè)吃螃蟹的人勇于站出來。 那么,好吧,筆者就來啃啃這個(gè)硬硬的螃蟹殼~~
首先,緣起是看到Labs Blog里有人很得意地宣稱 QtCreator有了法語(yǔ)版, 這就讓筆者很不服氣啦, 懶散的法國(guó)人都能完成這個(gè)任務(wù),難道國(guó)人沒有這個(gè)精神和毅力? 特地去creator的git上看了看… 沒想到還真是沒有! 當(dāng)然, 其實(shí)國(guó)人中有想法并樂于付諸實(shí)踐的人還是蠻多的, 只不過都在悶頭苦干,未必會(huì)像法國(guó)人一樣拿出來炫耀而已。 Qtcn上有位網(wǎng)友就share了他做的Creator翻譯qm文件, 這種樂善好施的人已經(jīng)不多啦~(咱cuteqt這里算是大集合 ^_^)。 在qtcn上聯(lián)系了這位網(wǎng)友,他很慷慨地貢獻(xiàn)了他的版本。
原以為翻譯creator應(yīng)該是項(xiàng)手到擒來的工作,況且還有個(gè)半成品, 做起來才發(fā)現(xiàn)工作量異乎尋常的大。 先是原來的翻譯并非十全十美,仔細(xì)檢查起來詞不達(dá)意的地方還挺多。 再一個(gè)這個(gè)文件版本可能是1.2左右的,很多新增加的功能都沒有翻譯,新內(nèi)容大約有1/4左右。 每條都要看過來對(duì)我的眼睛和大腦都是摧殘啊~~
先不提這些讓人頭痛的事,今天主要是給大家介紹一下如果參與Creator的開發(fā), 基本的操作和流程。 大家實(shí)踐實(shí)踐,順便也來幫我翻譯翻譯,呵呵。
匿名用戶只讀訪問
這個(gè)最簡(jiǎn)單, 先在電腦上裝上git的客戶端。 然后找到項(xiàng)目的git地址, 如creator項(xiàng)目,用git clone命令獲得最新的代碼:
git clone git://gitorious.org/qt-creator/qt-creator.git
這樣得到的是官方代碼主干分支的內(nèi)容。 如果具體到某個(gè)分支,就要用分支的git地址, 如筆者創(chuàng)建的用于中文翻譯的分支:
git clone git://gitorious.org/~shiroki/qt-creator/qt-creator-zh_cn.git
git的url地址可以在項(xiàng)目主頁(yè)上查到。 Qt所有的項(xiàng)目基本上都在git上建有項(xiàng)目,總的主頁(yè)在http://qt.gitorious.org/
匿名用戶只能查看代碼, 用于獲得最新的代碼修改。 如果想要參與其中,就必須要注冊(cè)用戶了。
注冊(cè)用戶參與開發(fā)
首先要注冊(cè)gitorious.org網(wǎng)站的用戶, 用該用戶登錄。 登錄后點(diǎn)擊頁(yè)面右上角的”~用戶名”會(huì)顯示用戶配置頁(yè)面,在該頁(yè)面里可以創(chuàng)建自己的工程, 可以查看用戶的歷史記錄,如最近做了哪些push之類的。 我們要在這個(gè)頁(yè)面完成一項(xiàng)重要的工作,就是上載ssh的public key。 這個(gè)是在你提交代碼時(shí)用于鑒別你的身份的, 和用戶名/密碼方式的登錄有異曲同工之妙。
下面以Linux host用戶參與Creator的開發(fā)為例介紹具體的步驟。 (Windows的別問我啊,問google)
- 指定登錄用戶賬號(hào)
需要修改 ~/.gitconfig中的email和name, 填入git網(wǎng)站的注冊(cè)信息。
- 創(chuàng)建ssh key pair
$ ssh-keygen -t rsa
這一步會(huì)在你的~/.ssh/下生成一對(duì)文件,筆者系統(tǒng)中為 id_rsa和id_rsa.pub, 前者是私鑰, 放在自己的系統(tǒng)中不動(dòng),后者是公鑰,要上載到git系統(tǒng)中作為身份標(biāo)識(shí)。 打開id_rsa.pub文件,把其中的內(nèi)容拷貝粘貼到git的add SSH key界面中, 保存。 這個(gè)公鑰文件就代替登錄密碼的作用。
- 創(chuàng)建自己的代碼分支
進(jìn)到工程頁(yè)面 http://qt.gitorious.org/qt-creator/qt-creator 在右側(cè)有個(gè)“Clone this repository on Gitorious”, 點(diǎn)擊此項(xiàng),在下一頁(yè)面中填寫分支的名稱, 如 qtcreator-zh_CN, 繼續(xù), 一個(gè)分支就建好了,默認(rèn)你就是這個(gè)分支的owner。
進(jìn)到你的克隆分支的主頁(yè)http://qt.gitorious.org/~shiroki/qt-creator/qt-creator-zh_cn 可以看到該克隆的url
Clone this repository (Git / HTTP) : git clone git://gitorious.org/~shiroki/qt-creator/qt-creator-zh_cn.git Push url: git@gitorious.org:~shiroki/qt-creator/qt-creator-zh_cn.git (?)
右側(cè)還有更詳細(xì)的信息,如都有哪些人參與此項(xiàng)目。 在右側(cè)的“Manage Collaborators”里可以添加其它的git用戶為你的協(xié)作者,這樣他們也可以擁有提交修改到你的克隆分支的權(quán)限。
- 在本地修改文件
- 添加修改
$git add filename
所有被修改的文件都需要用git add命令添加到本地的cache當(dāng)中, 包括已經(jīng)存在的文件和新添加的文件,之后git commit才能知道哪些文件需要提交
- 提交修改
$git commit
此命令是將修改提交到本地的cache, 不會(huì)影響server端的內(nèi)容。 commit時(shí)需要填寫本次commit的信息,標(biāo)準(zhǔn)信息包括,修改涉及到哪些文件,以及本次commit的描述信息,如修改了哪些東西,還有多少未完成,參與人和Review此修改的人是誰(shuí)等等。 這里所有涉及修改的文件都會(huì)列出來,前面用#號(hào)注釋掉, 需要將你想提交的文件前面的#號(hào)去掉。
git add..和git commit兩個(gè)命令在編輯本地文件的過程中可能被頻繁調(diào)用。確定修改告一段落,需要提交到server了,這時(shí)用到git push 命令
- 提交修改到server端
$git push
還可以用 $git push –dry-run查看push操作, 加了dry-run參數(shù)git就只是假裝push了一下,并沒有真正提交數(shù)據(jù)。
過一會(huì)兒回到你的克隆分支頁(yè)面就可以看到本次提交的log信息了。
- 提交merge申請(qǐng)(這一步筆者還沒實(shí)踐,暫時(shí)先留著以后補(bǔ)充)
由于我們的修改只是針對(duì)自己的克隆分支,要想讓官方接受我們的修改,還需要提交merge申請(qǐng)。 該申請(qǐng)?jiān)诳寺》种ы?yè)面的右方可以看到 “Reguqest merge”, 在提交merge 申請(qǐng)的時(shí)候還要簽署一個(gè)版權(quán)方面的協(xié)議,估計(jì)是聲明提交的代碼沒有版權(quán)糾紛,并且放棄個(gè)人版權(quán)之類的。 后面我們能做的就是等待了。 merge申請(qǐng)由官方專人去review, 經(jīng)過審核就有可能被并入官方的master分支。 當(dāng)然也有可能審核失敗, merge被rejected, 這個(gè)怎么解決就得等真正遇到了才知道。
參與Creator中文化項(xiàng)目
筆者已經(jīng)在git上建好了qtcreator中文化的分支, 有興趣的參與的同學(xué)可以選擇適合自己的方式。 如簡(jiǎn)單的, 匿名方式獲取zhcn分支的代碼, 用linguist工具打開 share/qtcreator/translations/qt-creator-zh_cn.ts文件, 檢查其中的內(nèi)容, 看看是否有翻譯錯(cuò)誤。 (如果發(fā)現(xiàn)有需要修改的地方,最好是做個(gè)patch給我。)
另外一種是真正的參與, 注冊(cè)個(gè)git用戶, 告訴我你的用戶名, 我把你的用戶加為collaborator, 這樣你就可以在本地修改ts并提交到git服務(wù)器上, 其他的collaborator也可以及時(shí)看到你的修改。 唯一還需要協(xié)調(diào)的就是分工問題了,這是后話, 等有人參與的時(shí)候我們?cè)賮碛懻摗?/p>
可以在qq群,blog/bbs留言
Tags: git, qtcreator
This entry was posted on Thursday, January 7th, 2010 at 6:09 am and is filed under Qt技術(shù). You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.