Board logo

主題: [其他] 有人用過Git來做程式碼管理嗎? [打印本頁]

發表人: Vic    時間: 2011-4-19 04:06 PM     主題: 有人用過Git來做程式碼管理嗎?

之前都是用svn…但git可以分散式管理…也就是commit,log等都可以離線進行。

而且分支功能蠻強的…有朋友用過嗎?請分享一下經驗~

==short-cut==
有圖有真相
Git+ssh @centos 安裝步驟+Windows client
TortoiseGit (windows client)
Mac Git Client
發表人: miholee    時間: 2011-4-19 10:46 PM

http://zh-tw.whygitisbetterthanx.com/
這個是不錯的參考資訊。

Git 是存完整的檔案 snapshot,不像 CVS SVN 只記憶與上一版的差別。
所以不管是從目前所在的 HEAD,還是很久之前的,都能夠很快切換到該版本。
不過並不會因為存 snapshot 而造成使用的空間大幅增加,因為它有很好的物件管理。
假設某個檔案完全沒有更動,那物件庫中只需要存一份即可,不需要每一個版本都存一份。
當未壓縮的物件的大小 or 數量(詳細規則不清楚),Git 會自動將這些物件壓縮打包起來。
也可以手動執行此動作。
記得有人用過 KDE 做過類似的比較,Git需要的空間遠低於 svn。

Git 不會對空目錄做版本控制,不像 svn 允許空目錄的存在。
寫的不好的 build system 可能需要稍做修改,檢查及處理此情況。

不過因為是分散式管理的關係,同一筆修改,有可能以不同的 SHA1 ID 現身(如:被rebase過或用 git commit --amend之類的方法重新改寫commit)。 如果是已上傳的 commit,就不要再去改它。 不然屆時可能會很困擾。

雖然 merge 能力很強大,會自行尋找要合併的分支的共同祖先,再根據這兩個分支與該祖先的差異,進行合併的動作。(聽說很來 svn 也跟進提供此功能)。 不過也曾經看過在複雜的條件下,合併出一個怪物。(出現重複的資料)

Git 1.7 在 recursive 合併方式新增 subtree 選項,可以將別的 Git repo. 合併到我們的 Git repo. 的特定子目錄下。
早期版本可以透過 submodule 來做。 不過該子目錄本地端也需要時常更新的話,用 submodule 有點煩人。

儘量不要放像文字檔類型且檔案又很大的檔案。 看過數次 Git 在處理這些檔案時,不知道在忙什麼,放1~2個小時都沒反應。 不過工作目錄其實已經都處理好了,按 Ctrl + C 中斷後也沒發生什麼事。

Git 本身的 protocol (git://),速度還蠻快的。 不過個人感覺,在網路狀況佷糟的環境下,似乎會有些問題。 另外就是,有些公司網路會設限,用 http:// 可能比較好。(雖然速度慢了些)

Git 支援 svn,可以本地端修改、commit後,確認後可以再上傳到 svn server。 只不過醬子用時要留意 svn 只支援 linear 的 history。

有時程式改一改後,要上傳的程式碼,其實包含兩種以上功能。 如果說想儘量保持 atomic commit ,一定要分開上傳的話,CVS 或 svn 大概都要把檔案備份後,先去掉其它功能後上傳......。 光想到醬子就不想做了。
Git 可以用 git add -p 方式,以一小段一小段詢問使用者是否要上傳。 若切出來的程式仍不夠清楚的話,還可以選擇編輯功能,只上傳該小段內特定一小部份程式。工作目錄下的檔案並不會被影響,所以不需要做額外的備份。

註:git add -p 若切出來的程式仍不夠小的話,“不建議”選用縮小 hunk 方式。 因為有可能會造成上傳的程式碼與預期不符。(例:程式碼內有很多類似的小段程式碼,若 hunk 切的太小,易造成誤判)

大致上是醬子,雖然用的時候有一些問題。 不過比起 CVS 開個分支要花 15 分鐘、svn 會生出一堆 .svn 目錄,然後放一堆近似檔案,搜尋前還得先排除掉。 我還是會用 Git 來做管理。

[miholee 在  2011-4-19 10:57 PM 作了最後編輯]
發表人: Vic    時間: 2011-4-19 11:16 PM

非常感謝miholee兄的指教...

熊小也剛架了git在嘗試中...只看了一些很基本的documentation就可以操作...個人認為git的指令蠻直觀的...不困難.

我是用ssh來存取git...感覺也蠻快的...而且也可以限制用戶...也是git與http外另一個選擇

剛於github申請了帳號...他的git web介面不錯...不過github是closed source...

miholee兄有將git整合到trac, redmine那些web project management系統嗎?

還有就是miholee兄要不要考慮寫篇教學... 正所謂教學雙長...
發表人: miholee    時間: 2011-4-19 11:50 PM

用 ssh 的話,而且有不同的使用者帳號的話要注意權限。
印象中預設的權限是只有建立的使用者才有寫入的權限。
醬子會發生什麼問題哩?
比如說 git push 了一個物件,SHA ID 是 ac 開頭,那麼 origin 的 .git/objects 會出現一個名為 ac 的目錄,權限有可能是該使用者才能寫入的。
下一次,另一個使用者也 push 一個 ID 是 ac 開頭的物件時,會被拒絕,因為沒有寫入權限。
之前是在該 origin git repo. 用 git init --shared=XXX 修改權限(請參考 git init --help)

或者也可以參考 Pro Git 這本免費的電子書,用 gitosis 或 gitolite 架設。
醬子大家的 ssh 帳號都是用無法登入的 gitosis 或 gitolite。 實際身份以及讀寫的權限再依據各人的 SSH public key 而定。其實就跟 GitHub, Gitorious 一樣,只不過是以修改文字設定檔來做  SSH key 的管理。
gitosis 只能做到是否可讀、寫特定專案。
gitolite 可做到限制分支、打標籤的權限。

網路上有個 git-completion.bash script,可簡化一些操作及幫助使用者更容易瞭解目前 git repo. 的狀態。
如自動補上命令、分支等......

trac 的整合,印象中是自己包一個 trac-git-plugin RPM,安裝後根據網頁說明,做些設定。
如果要做到 commit 時,自動 close issue 的話,要把 trac 網頁提供的 script 放到 git repo。
這我自己也沒在用,因為 trac 後來被我淘汰了,沒有用多久。

redmine 是前一陣子才開始用的。印象中只要指向 bare git repo. 就可以了,權限注意一下就好,不需要特別的設定。個人猜測,將它指向一般的 git repo. 的 .git 目錄,應該也可以。 還沒特別試過就是了。
剛設定完一段時間,redmine會在忙著處理,要等一陣子。 網頁有教如何關閉此功能。(細節忘了)

Git 網站的 Documentation 提到的 ProGit 及 Git Internals 還不錯。另外幾本就沒看過了(當年這幾本都沒電子書
至於教學的話還是別寫了,很久沒溫習 Git 的文件,很多東西都忘了,只記得平時用的零碎細節。
而且大部份也都是參考 Pro Git 學的。

[miholee 在  2011-4-19 11:59 PM 作了最後編輯]
發表人: Vic    時間: 2011-4-20 01:03 AM

有關ssh的部份...不知道是否將使用者都放到同一group...e.g. developer..來解決權限問題?

不過等我也看看gitolite的資料~ 謝謝介紹~

redmine應該不錯用是吧? 我也想架來用用...不過要先架好RoR~ 這我真的不熟了~

anyway...謝謝miholee兄的經驗分享~
發表人: Kcars    時間: 2011-4-20 08:00 PM

redmine我在自己電腦上架不起來…原因好像是RoR的某樣東西的版本太新
Heroku又看不懂,需要花點時間研究…

要不然很想用redmine來管看看程式碼(code review)…

---

除了github,springloops似乎也不錯?

[Kcars 在  2011-4-20 08:01 PM 作了最後編輯]
發表人: Vic    時間: 2011-4-20 09:23 PM


引用:
Kcars寫到:
redmine我在自己電腦上架不起來…原因好像是RoR的某樣東西的版本太新


沒錯…的確是這樣…必須要用指定版本。

對應最新的版本1.1.2 (2011-03-07)

Supported Ruby: ruby 1.8.6, 1.8.7               
Rails version: Rails 2.3.11
Rack version:Rack 1.1.0

Notes:
Ruby 1.9 is not supported yet. You have to use Ruby 1.8.x as stated above.
RubyGems 1.3.1 or higher is required (Rails 2.3.5 will fail with RubyGems 1.5.0 and later, stick to previous versions of RubyGems)
Rake 0.8.3 or higher is required
Rack 1.0.1 is required. If you don't have this exact version, database migration would fail.
I18n 0.4.2 is required for Redmine >= 1.0.5

source: http://www.redmine.org/projects/redmine/wiki/RedmineInstall


我試了,可以安裝成功。



引用:
Kcars寫到:
除了github,springloops似乎也不錯?


樣子看上去不錯~ 現在是2.0 beta...等它到了正式版再試試~
發表人: miholee    時間: 2011-4-20 11:12 PM


引用:
Vic寫到:
有關ssh的部份...不知道是否將使用者都放到同一group...e.g. developer..來解決權限問題?

redmine應該不錯用是吧? 我也想架來用用...不過要先架好RoR~ 這我真的不熟了~

anyway...謝謝miholee兄的經驗分享~


公司那邊我是將所有的人加入同一個群組,
將共用的 git repo. (我們採用集中管理的流程),設為該群組可讀寫(修改己存在的檔案/目錄權限);
然後再跑過 git init --bare --shared=group (這樣子新建立的目錄,就會是同一個群組都可寫入的。)
至於每個人從人共用的 git repo. clone 到自已電腦的則不管,用預設的就好了。

redmine還在摸索中,感覺上還不錯。原生支援 Git、甘特圖、多個專案。
比較討厭的是有幾個元件需要用特定版本,不過也不致於說很難弄出來。
PS: 我是為了 trac 的甘特圖外掛看起來很醜、需要人工輸入年月日,無法用日曆點選。 才淘汰 trac 的。

[miholee 在  2011-5-8 10:19 PM 作了最後編輯]
發表人: qoowater    時間: 2011-4-20 11:34 PM

要裝remine 可以試試看這個 http://bitnami.org/stack/redmine
BitNami Redmine Stack greatly simplifies the deployment of Redmine and its required dependencies. It can be deployed using a native installer, as a virtual machine, in the cloud or as a module over an already installed infrastructure Stack.
他會將所需要用到的所有東西 apache redmine ruby.. 等等放在同一資料夾而不是安裝到系統,所以不會有軟體版本的問題,建議使用看看。
發表人: Vic    時間: 2011-4-21 11:01 AM


引用:
miholee寫到:
公司那邊我是將所有的人加入同一個群組,


謝謝分享...我想也是這樣...


引用:
qoowater寫到:
要裝remine 可以試試看這個 http://bitnami.org/stack/redmine


nice...剛看了一下~ 除了qoowater兄提到的1)installer(適用於windows, linux & mac)外....他還有2)適用於VMWare or VirtualBox image(也就是linux+redmine整合版)....再加3)cloud(e.g. Amazon EC2)的版本...
發表人: Vic    時間: 2011-5-1 05:45 PM

我將TWed2k的source用Git來管理…感覺很棒。剛才取消鮮花系統的推文效果…並將修改commit了。

很好玩呢~ 有圖有真相


發表人: Vic    時間: 2011-5-10 08:59 PM

再加一張…慢慢用下去…真的非常好用呢!

特別是可以將所做的事都記錄下來…很方便。

我的做法是多commit…就算只有一個改動也commit…最重要是commit的內容統一。反正也用不了多少資源。

另外,git的分支(branch)也很好用…當我們有一個新的想法想嘗試…又不想影響本來(master)的程式…就可以建一個分支…



待功能完善完…再加到master上…



如果大家有寫程式…真的非常推薦git…很好用呢。



以下是TWed2k code git log


發表人: jfhsu    時間: 2011-5-12 10:23 PM

可以請問一下看 git log 這個 windows client 是什麼tool呢?
發表人: Vic    時間: 2011-5-13 12:29 AM

TortoiseGit (它有整個git command的gui…不只是git log)

>>> http://code.google.com/p/tortoisegit/


Tortoise還有CVS, SVN, Mercuria的windows client...

CVS

>>> http://www.tortoisecvs.org/

SVN

>>> http://tortoisesvn.tigris.org/


Mercuria

>>> http://tortoisehg.bitbucket.org/download/windows.html#win32
發表人: 陽だまり    時間: 2011-5-13 06:56 PM

請問一下熊小
最後是用那一個架
最近剛好沒工作有空閒
也想來測試一下 XD
發表人: Vic    時間: 2011-5-13 09:53 PM

我的架構是Git+ssh

以下是我在centos的安裝步驟

====建立git server==========

1. 需要先添加EPEL(Extra Packages for Enterprise Linux) repository:
rpm -Uvh http://download.fedora.redhat.co ... ease-5-4.noarch.rpm


2. 安裝git
yum install git


設定Git用戶
git config --global user.name "yourname"
git config --global user.email "yourname@gmail.com"



新建Repository,假如project已壓縮為tarball檔(projectA.tar.gz)
tar xzf projectA.tar.gz
cd projectA
git init
git add . #記錄project全部檔案
git commit -m 'init projectA' #第一次commit,git會將上一步add的檔案作記錄


產生git bare source…也就是讓別人clone的repo
cd /home
mkdir git
cd /home/git
git clone --bare ./projectA projectA.repo.git


完成以上的步驟,就是已經建立了git server…別人可以clone source了。


Git+ssh的缺點有

1. git client用戶管理不方便…除非都用單一用戶來push/pull source...否則每一個client都需要到server新增一名用戶,而且要將他們都放進同一group內。否則push時會有檔案權限的問題。
2. (忽然想不到。想到再補)

===以下是client的操作====

在另一台linux電腦上checkout(git叫clone)源代碼
git clone ssh://{user}@{git server}:{ssh port}/home/git/projectA.repo.git


{user}是git server主機內的用戶…也可以新增git用戶…如果只允許用git…不能登入shell…請用以下方法

#限制用戶只可以用Git(不容許shell access),使用git-shell為login shell
sudo vi /etc/passwd
{user}:{group}:1000:1000::/home/{user}:/bin/sh
{user}:{group}:1000:1000::/home/{user}:/usr/bin/git-shell



Windows下的方法,有GUI可用,

先下載以下2個程式並安裝

1. msysgit
http://code.google.com/p/msysgit/

2. TortoiseGit
http://code.google.com/p/tortoisegit/

先下載並安裝msysgit,完成後安裝TortoiseGit

第一次使用TortoiseGit時,指定git.exe(於msysgit/bin)的存放資料夾

TortoiseGit的使用這裡就不說…主要的就是Git clone, Git Sync, Git log那幾個…試試就知道。


另外不想每次push/pull都要打密碼…可以public key(e.g. id_rsa.pub) 加到上面{user}的authorized_keys

cat /tmp/id_rsa.pub >> /home/{user}/.ssh/authorized_keys


TortoiseGit有帶一個叫PuttyGen的程式可用來產生public key


熊小也是第一次架…如果上面有任何不清楚or有錯誤的地方…請指教。
發表人: 陽だまり    時間: 2011-5-14 03:22 PM

恩…
目前我也是使用msysgit來架試試
但不知msysgit是否有把自己公開在網路上讓大家自由使用的功能這樣
linux架的應該是可以吧

--
後來看教學,利用msysgit已架起web
再來就是找新增專案的方式了

[陽だまり 在  2011-5-14 04:17 PM 作了最後編輯]
發表人: zoho    時間: 2011-5-14 07:45 PM

我是用官方網路介紹的windows版本git,叫git extensions (((((((((有看過TortoiseGit,烏龜好像不是用gui介面去下git指令?)))))))))
還不錯用,但一開始就有亂碼的問題,檔案名稱是中文,就不能使用UTF8匯入,會ERROR
而COMMIT使用BIG5會變亂碼… 切回UTF8又會有問題....
這好像是因為WINDOWS存的是BIG5格式的關係,有專案有中文檔名,現在只好用英文當commit message

---------

用ubuntu10.4長期支援版32bit架git server,使用git+gitosis來管理帳號
預設client使用windows + git extensions來使用做版本控制…

git extensions是使用putty key generate來產生private key和public key
產生的格式和直接在ubuntu上ssh key-gen -t rsa的格式不同…
加入到gitosis的config設定檔中,雖然在ubuntu上的帳號可以git clone
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…

---------

不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差

[zoho 在  2011-5-14 07:49 PM 作了最後編輯]
發表人: miholee    時間: 2011-5-14 09:16 PM


引用:
Vic寫到:
新建Repository,假如project已壓縮為tarball檔(projectA.tar.gz)
tar xzf projectA.tar.gz
cd projectA
git init
git add . #記錄project全部檔案
git commit -m 'init projectA' #第一次commit,git會將上一步add的檔案作記錄


產生git bare source…也就是讓別人clone的repo
cd /home
mkdir git
cd /home/git
git clone --bare ./projectA projectA.repo.git


完成以上的步驟,就是已經建立了git server…別人可以clone source了。


現在一些軟體原始碼內也會附上 .gitignore,有時在設置git repo.時會因此遺漏一些檔案。如:Linux kernel、redmine。
以 2.6.22 Linux kernel 來說,它的 .gitignore 會忽略檔名是 . 開頭的所有檔案。
那麼用git add . ; git commit 做出來的git repo.,實際上不會有.gitignore, .mailmap 檔案。
建議建好 git repo. 後,再clone一份出來,檢查一下是否有遺漏檔案。
發表人: Vic    時間: 2011-5-14 11:34 PM


引用:
陽だまり寫到:
後來看教學,利用msysgit已架起web
再來就是找新增專案的方式了


在windows下架…看別人好像是用CopSSH+ msysgit…自己沒試過。不肯定是否可行

Windows 上架設 Git 伺服器
http://bone.twbbs.org.tw/blog/archives/1487




引用:
zoho寫到:
有看過TortoiseGit,烏龜好像不是用gui介面去下git指令?


烏龜直接用它的介面來操作git…它也有指令…tgit



引用:
zoho寫到:
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…


我用烏龜是直接指定windows下的public key file…選Load Putty Key什麼的…就可以bypass password


引用:
zoho寫到:
不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差


謝謝分享…不過這些算是git plugin嗎?



引用:
miholee寫到:
現在一些軟體原始碼內也會附上 .gitignore,有時在設置git repo.時會因此遺漏一些檔案。如:Linux kernel、redmine。


謝謝指教…之前就是忘了將一些有db password的file加到.gitignore…最後一起push了出去。

還好只有我一個人用…也不是public…最後要去改password…
發表人: zoho    時間: 2011-5-15 10:25 AM


引用:

引用:
zoho寫到:
,但卻無法從windows上git clone,不知是哪裡出問題,已經搞快1天了…


我用烏龜是直接指定windows下的public key file…選Load Putty Key什麼的…就可以bypass password

今天在virtual box上的ubuntu可以git clone自己架的git server上的repo,但是在windows上不行
後來發現原因了… 原來… 我是用git extensions上的git bash (開git extensions按ctrl+g出現的那個git command line),去做git clone,結果不行
然後我改用程式集中的git bash… 竟然就可以了!!! 這兩個git command line外觀有點不同,雖然都能下git指令,但git extensions開的git bash竟然不能git clone,原因我不懂…
有使用的可以注意一下… 我想push失敗搞不好也是因為相同的原因… 反正我最低需求是「能在windows上存取remote repo」,能讓我能測試remote 指令就夠了…Orz


引用:

引用:
zoho寫到:
不過這幾天玩git到是發現一些有趣的東西
1.vsftpd,直接安裝就能在FTP使用帳號密碼登入
2.noip2,配合rc.local開機自動更新dynamic dns
3.nomachine fx free版,算xwindows的一種,比內建的vnc快多了,free版只能讓2位remote user使用xwindow的session。
4.linux的備份策略… (學心酸的,常常需要restore感覺很差


謝謝分享…不過這些算是git plugin嗎?

不,前3個是linux的軟體,最後一個只是備份策略,其實備份我用tar打包整個根目錄,反而是還原可以根據還原的資料夾不同來達到甲機備份,乙機還原的功能
但我只有試過用ubuntu live cd開機,先把原本的系統砍掉,再使用tar指令把usb上的壓縮檔還原回硬碟

給個參考網站,有教備份功能
http://blog.miniasp.com/post/200 ... -Restore-Notes.aspx

我是在家裡架git server,不喜歡記浮動ip,reboot後就連不上,所以弄了noip2來開機動態更新linux的dns ip
而vsftpd是因為linux和windows的網芳問題,改用ftp來解決,因為直接apt-get install vsfptd就會自己用linux上的帳密來架ftp,所以很方便
另外ubuntu內建的vnc遠端桌面真的超lag… 大概是傳畫面的關係,改用xwindows的架構,只傳資訊,這樣連LINUX的遠端桌面就快多了
最後再tar指令備份,還原用ubuntu安裝光碟兼live cd,這樣就可以把linux玩爛之後再還原~ 一還原就能直接遠端桌面連線~ ssh連線什麼的~ @_@

有點離題了… 不過git還不錯用~ 習慣了scm後就沒辦法沒有scm,自己改什麼沒紀錄,沒訊息的話,久了就忘了
不過我以前是玩cc cq,偏偏這個IBM的SCM要收費… 但對免費的svn cvn不熟…Orz, git的觀念不好理解

有什麼git的書可以推薦嗎~ 有去書店看過幾乎沒有~

CODE:
[Copy to clipboard]
damn! 突然有個想法,直接在linux的root執行
git init
git commit  -am "my linux v1.0.0"
git tag v1.0.0

以後要還原就直接下
git checkout v1.0.0

git本身用recursion的方式處理底下的repo, 理論上是可以的…
.gitignore設定一下,這樣要備份還原系統,就用git指令就行了…~ ^_^ 來測試~ yeah!!
啊… 系統操作到一半還原理論上好像也不行,理論上也是要用live cd開機再還原才安全… 不過用來備份文件應該還ok… 大概…
--

[zoho 在  2011-5-15 10:58 AM 作了最後編輯]
發表人: Vic    時間: 2011-5-15 12:06 PM


引用:
zoho寫到:
有什麼git的書可以推薦嗎~ 有去書店看過幾乎沒有~


熊小看過幾本後…覺得Pro Git最清楚最完整。

書本的全部內容都可以網上看…包括中文翻譯版...想支持他的話…可以考慮買實體書。

至於PDF版…上emule搜索Pro Git…



引用:
zoho寫到:

CODE:
[Copy to clipboard]
damn! 突然有個想法,直接在linux的root執行
git init


哈哈~ 真有你的…竟然想用Git來備份整台主機~!
發表人: miholee    時間: 2011-5-15 03:46 PM

哈,我也有在用Git備份wine安裝的檔案。
至於整台主機,要小心機密的檔案外流唄。而且,每次更新套件後,多多少少會有一堆新檔案等者加入Git repo。
發表人: zoho    時間: 2011-6-6 09:29 AM

我的情形,是要管理http server (tomcat server) 的程式碼
但我們已經有個issue tracker的web介面,所以不能另外再架redmine之類的project管控軟體 (而且我們的RD只有三隻,實在不想自找麻煩)

-------------

這幾天用ubuntu架好git + gitosis + gitweb後,已經可以透過windows的git extension來存取設定好的git project

CODE:
[Copy to clipboard]
git = scm的主體
gitosis = 透過其它git user產生的ssh-key來設定每個git repository存取的權限 (簡單的說就是,讓git server不必對每個git user都開帳號,透過ssh-key的private和public key來認證,並透過gitosis.conf來設定每個git user的對gitosis管理的git project的存取權限,我是透過這種方式,在windows上用git extension產生ssh-key,上傳到git server,設定好權限後,就可以在windows上存取remote private git repository了)
gitweb = git內建的web介面,但看起來只能設定顯示與不顯示,無法設定每個人的讀取權限,對private git repository很不實用,因為很多檔案都有資料庫的存取帳號和密碼
目前有幾點希望大家能給點意見

1. git web interface的選擇 (private 使用)

引用:

git只是個資料夾,如果能透過http圖形介面看到誰改了什麼,現在的分支,而且能直接點進去看程式和修改的地方,會比較直觀…
比方說git extension的這張圖,點選能進去看每個commit所修改的檔案清單,再點檔案則能看到修改的內容,如果這麼漂亮的介面能用web interface就好了…

GIT WIKI我每個都google一下,但很多都找不到範例介面,不然就是看起來都很像gitweb,實在很難找到一個漂亮又直觀web圖形介面,而且又能設定讀取權限(最好能和gitosis結合),希望大家能推薦


2. git repository 和 http server的同步問題

引用:
用git來管理http server上的程式碼時,如果git server和http server位於不同主機,就必須要能同步兩台主機的狀態
對同步的功能我試想了一下,有幾個解法,但都不是很滿意
一、使用git hook,自定義post-update script,再透過ftp更新http server (難度極高… 根本是自找麻煩)
二、使用rsync (還可以接受,但看來還是要用git hook,每次push都要git archive解開到git server某個web資料夾,再讓rsync同步這個資料夾和遠端的http server)
三、直接在http server執行git pull或 git sync (還可以接受,但project蠻大的,是否有其它side effect,比方說更新所需時間)
四、每天定期關閉http server,再做同步… (變成1天只能sync 1次)
如有其它解法,希望能給點意見


3.git repository內含git repository的問題

引用:

程式碼一龐大起來,勢必要再細分為子git repository,並設定權限…看起來就是submodule!?
大致上看了這一篇,git已經很不直觀了,還看到這鬼東西,…
Git Submodule 的認識與正確使用!
這部份我還不瞭解,還要再看書確定需求和做法才行,如果有經驗者能指點方向更好…




[zoho 在  2011-6-6 09:38 AM 作了最後編輯]
發表人: zoho    時間: 2011-6-6 08:21 PM

把最近的操作錄成影片上傳到youtube, 要選1080而且要全畫面才能看清楚字
ubuntu 架 gitosis server 和 gitweb 範例 (繁體中文) (1/2)
ubuntu 架 gitosis server 和 gitweb 範例 (繁體中文) (2/2)

//這兩個是給有興趣的人看的
Host win7 Guest ubuntu by vmware player (繁體中文)
ubuntu 架phpBB3 (繁體中文)

[zoho 在  2011-6-6 08:26 PM 作了最後編輯]
發表人: miholee    時間: 2011-6-7 11:53 PM

以前在看ProGit時有看到gitolite支援gitweb。不過我自己只有用gitosis及SSH兩種方式,還沒用過這一套。平時也都是git、tig、gitk交叉使用。很少用Web介面。

http://progit.org/book/ch4-8.html

Gitweb support: Gitolite supports gitweb in several ways. You can specify which repos are visible via gitweb. You can set the “owner” and “description” for gitweb from the gitolite config file. Gitweb has a mechanism for you to implement access control based on HTTP authentication, so you can make it use the “compiled” config file that gitolite produces, which means the same access control rules (for read access) apply for gitweb and gitolite.

我覺得 submodule 用起來不是很順手,尤其是 submodule 無法獨立開發時。
若要修改 submodule 內資料,記得先開分支再做修改。不然哪天git submodule update一下,就準備用reflog找遺失的commit了。
發表人: Vic    時間: 2011-6-9 06:28 PM

有關web介面…我之前找過…的確沒什麼"好樣”的…
發表人: homiwu    時間: 2012-4-7 01:16 PM

簡單明瞭ˋ阿!~~
發表人: cyberlk    時間: 2012-4-7 07:59 PM

一開始接觸時用google code來進行各種操作
我想一般的軟體開發者可以在這上面熟悉各種命令與GUI
發表人: Vic    時間: 2012-5-31 12:15 AM

補一下mac方面的git client…熊小主要介紹幾個免費的。(我也不是太熟悉…如有錯請指正

1. GitX -- 快,簡單,但沒有push/pull

Log (History) screen


Commit screen


2. SmartGit (個人用免費) -- 支援Windows/Linux/Mac(java runtime),功能齊全,不時更新,個人認為它的diff比較完整…缺點是非mac native,起動比較慢。如果有utf8的檔案…請到Project->Repository Setting->Text Encoding改成UTF-8...否則非英文不能正常顯示。

Main screen


Log screen


3. Gity -- 快, 但不知道為何push會出error, 沒有去研究...圖片來自作者網站。


其他的還有
Gitti...下載回來想用的時候告訴我過期了不能用!叫我email作者。
Tower…看上去不錯…$59
SourceTree…以前收費… 現在好像不收費了…可以免費登記。


綜合來說:

熊小推薦SmartGit...如果只是做commit…就直接用GitX…想push時再用smartgit…2者加起來已經很好。
發表人: Vic    時間: 2014-7-17 06:34 AM

剛發現GitHub有個try git可以玩…不錯。

https://try.github.io/
發表人: disabledman    時間: 2014-7-17 08:19 PM

弟都是用 BitBucket (Private Repo. Unlimited)
Mac 用 SOURCETREE
XP用 小烏龜GIT




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0