<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    最近有項目需要多人在異地協(xié)同開發(fā),用什么來做配置管理呢?
    當(dāng)然,分布式的版本控制系統(tǒng)是首選,目前比較流行的有兩個,Git和Mercurial(hg),為了比較決策,在網(wǎng)上搜了下,在Windows下開發(fā)的話,覺得hg更方便點,尤其是有tortoiseHG,異地共享更簡單,當(dāng)然,是指針對人數(shù)不多的團隊,不是太大的項目,沒有考慮性能問題。否則,可能還是Git有優(yōu)勢,想想看Linus的作品,目前用來管理Linux Kernel的開發(fā),自然就明白了。

    當(dāng)然,mercurial也不是不行,python的開發(fā)就是用mercurial在管理,具體誰更好就不討論了,關(guān)鍵是對我而言,哪個更加好用,簡便才是硬道理!

    覺得最方便的就是在于TortoiseHG集成了WEB Server,這樣,在同步的時候,只要簡單地從右鍵菜單上啟動web Server,就可以把repository 發(fā)布出來,的確夠方便吧?

    show 下圖片:

    Start HG Web Server

    啟動后是這樣的:

    當(dāng)然,在啟動前,你還可以把相關(guān)的參數(shù)配置一下,仔細研究下,里面的東西不少。


    ps: 今天打開看了下,閱讀量一夜之間就有了不少,謝謝大家的關(guān)注,想想應(yīng)該補充下內(nèi)容,以對得起大家的時間

    如果,你的機器在防火墻后,或者是沒有公共的域名,使用WEB Serve的方式就有些不方便。當(dāng)然,有不少的免費域名可以通過3322.org或者花生殼申請賬號,并通過客戶端使用。配置工作稍微麻煩點,這里就不寫了,有興趣的朋友可以參考下其他網(wǎng)上的說明。

    在這里要補充的是一個利用郵件來共享repository的途徑。

    還是看圖說話,寫個簡要的梗概,具體的細節(jié)部分需要大家親自試一下才能體會得到。
    1. 配置好郵箱設(shè)置


    2. 發(fā)送變更

    注:郵件中也可以發(fā)送patch,只是用文件附在郵件內(nèi)容中,需要手工再處理下,不推薦。
    如果只是在交流溝通時用倒也方便,僅是看看,不實際合并時比較好。

    3. 協(xié)作者從郵件附件中獲得:


    相對而言,Git在windows上的GUI就簡陋了些,尤其是沒有簡便的web發(fā)布功能令它遜色好多---對我這個實用的懶人而言,呵呵。盡管我用Git比HG早:)
    Git GUI
    相對于這個GUI界面而言,個人覺得bash的命令行界面還更靈活些,在Linux平臺下,一些插件也使工作更加輕松和有效率。

    附圖是MinGW下的Git Bash使用界面,包含有命令自動完成,幫助使用等,也還算比較方便。




    附: 這是另外一個人的意見,英文的,就不翻譯了。 

    當(dāng)然,他也有他的道理----兼聽則明,自己根據(jù)實際需要選擇合適的才是最重要的,畢竟,有助于輕松完成項目才是最重要的。

    Git vs Mercurial - Why I chose git

    Background and Our Needs

    I first heard about distributed version control systems from Allan Odgaard on the TextMate blog. We’ve been working for about a year on Unison, which is a web application to develop online training. Our development has been so fast-paced at times we’ve been forced to push out releases more quickly than we could test them thoroughly. More than once we’ve needed to push out a less-than-stable feature for a high-profile client. We would later realize something wrong with the feature, but there was no way to go back.Branching and reverting changes in version control software is supposed to allow you to do these things, but both are so annoying in SVN that we never actually used either. We only kept a branch around when we wanted to make a release and continue development in the trunk. We would never have dared roll back any commits

    Enter Distributed Version Control

    Distributed Version Control promised to solve these problems for us. We would be able to branch as often as we liked, which would then allow us to keep branches around for longer without worrying about merging them later.

    I first looked at git, then tried mercurial (hg) for awhile, then finally decided on git. I’m going to try to provide an unbiased review of some of their strengths and weaknesses.

    Realize that both tools are good at merging, both have strong user communities, and they are very similar choices. I found good comparisons hard to come by.

    Mercurial

    Mercurial has several advantages over git.
    Excellent Documentation: The hgbook helped me to understand the concepts
    Cleaner Commands: The interface requires fewer options and flags
    Intuitive Commands: The names they picked for reverting changes make more sense
    Windows Support: They have a full windows client, although using it to make lots of branches would get crazy fast
    It also has some disadvantages
    “Named Branches” suck: They added this feature as an afterthought. The way everyone branches is by “cloning” a repository. So, if you want to work in a new branch, you have to make a brand new copy of everything. The implementation of named branches simply isn’t workable
    Rewriting History is difficult: hg doesn’t have the features git does here

    Git

    Git has its own strengths
    Branching is Supreme: This is a big one. Git lets you make new branches at any time, and lets you switch back and forth between them in one working copy.
    Remote Branches: Git can send and receive changes from several different public repositories. This is useful if you need to publish more than one branch so others can download your changes.
    Merging and Rewriting History: You can squash several commits together into one big commit when you merge, getting rid of the useless messages. You can easily pull a new version of the code you’re working on into your experimental branches.
    Disadvantages
    Slightly more confusing: There are more commands by default, and the reverting commands are hard to keep straight at first

    The Wrapup

    The interface to Mercurial is easier, and I like their mainstream approach, but git is simply far better with anything advanced. I don’t feel that Mercurial can handle making branches for each feature you are developing, and doesn’t do a good job of pushing/pulling changes from public repositories.

    In the end, we picked Git. I’m going to revisit mercurial in another year and see if they’ve finished adding a few more necessary features. I wanted a DVCS in the first place so I could branch like crazy, and Mercurial really doesn’t support it well enough.

    Posted in Environs.

    其實,從DVCS本身來講,我也傾向于Git,它的功能更加完善,可能有些命令不是那么直接,不太容易理解,也比較多。但考慮到一個眾多志愿者參與的項目,像Linux Kernel這樣的集市式的開發(fā)項目,Git作為一個目前來講近乎理想的方案的確為Linux的快速發(fā)展起到了很大的作用,并且,它是Linus在長期的BitKeeper使用經(jīng)驗的基礎(chǔ)上開發(fā)的,無論從需求把握的角度,還是從它的性能方面的設(shè)計考慮都有很多過人之處。

    就我本人的經(jīng)驗而言,從開始做軟件開發(fā)到現(xiàn)在,也有將近10個年頭了,經(jīng)歷過幾個公司,也參與過不少的大的項目,使用過幾種商業(yè)的、或是開源的VCS,不少是被動接受的,后來自己選擇,決策用什么,算是有些經(jīng)驗,但總體來講,這些VCS是各有千秋,適用才是最好的。

    從接觸的先后順序來說,依次使用過VSS、CVS、ClearCase、Perforce、SVN、Git,前段時間才聽說HG,覺得不錯,現(xiàn)在為了新的項目,臨時學(xué)了下,總體來講,一般在局域網(wǎng)環(huán)境中使用的話,我還是喜歡CVS,畢竟,這是個大家都熟悉的工具,簡單易用,也不必再為了這個工具來專門花時間來培訓(xùn)團隊人員,否則在使用過程造成的麻煩可能會帶來些不必要的開銷。 但在異地開發(fā)、或者是項目比較大,各部分難以齊頭并進的時候,DVCS系統(tǒng)才是更好的選擇,另外一種應(yīng)該選用DVCS的情況是,當(dāng)項目需要嚴(yán)格的對外發(fā)布版本控制時,選擇DVCS可以讓各小組內(nèi)部先保證小范圍的集成順利進行,這樣可以避免在用集中式版本控制系統(tǒng)時,在deadline前,出現(xiàn)大家同時提交,沖突不斷,拼命加班的情形。

    如果,團隊成員學(xué)習(xí)能力都比較強,建議在局域網(wǎng)內(nèi)開發(fā)時,也選擇用Git這樣的DVCS,畢竟,個人習(xí)慣不一樣,每個人的開發(fā)速度也不同,Git強大的分支管理和歷史記錄回溯功能,可以為項目進展提供強大的靈活性,也肯定會提高整體的開發(fā)效率。

    相信,以后的版本管理中,類似Git的工具將會成為主流,Git也會變得更加簡便易用的。




    Feedback

    # re: Git Vs Mercurial hg? 異地協(xié)同開發(fā),分布式SCM方案選擇!  回復(fù)  更多評論   

    2009-04-29 05:35 by yuz estetigi
    thank you very good site...

    # re: Git Vs Mercurial hg? 異地協(xié)同開發(fā),分布式SCM方案選擇!  回復(fù)  更多評論   

    2009-04-29 05:36 by yuz estetigi
    thank you very good site

    # re: Git Vs Mercurial hg? 異地協(xié)同開發(fā),分布式SCM方案選擇!  回復(fù)  更多評論   

    2009-05-06 07:31 by bwlee
    有個朋友看了我的這篇筆記后,給我提了點意見,在這兒回復(fù)一下,順便作點簡單的說明:

    他的第一個意見是,這東西寫得不太清楚,比如HG跟Mercurial是什么關(guān)系沒說清楚,我想,這個問題應(yīng)該這樣來看,博客是自我的筆記,大家可以互相參考下,能帶來點思路的啟發(fā),但不是教科書,官網(wǎng)上這類東西很多。再說了,寫博客也沒稿費的,呵呵

    第二個意思是方案的選擇理由,以及相關(guān)的異地開發(fā)并不只是要解決這一個軟件配置管理就夠了,這個倒是有點道理,的確,軟件配置管理只是一個基本的問題,還有需求管理,開發(fā)、團隊間的交流討論,成員工作量的考核等,都是影響項目成敗的重要問題。 但這一展開就太大了,沒準(zhǔn)備寫成一本書:-)。
    不過既然提到了這些,順便把我的想法和做法大概列一下,歡迎批評指正。

    需求管理的工具很多,但工具之間必須配合好,才容易起到1+1>2的效果,所謂管理出效益,也是這個道理,簡單的把人頭堆積起來更是不能直接加速項目進程的,甚至可能起反效果。 比如ClearRequest和ClearCase之間就是個比較好的配合,但關(guān)鍵點是太貴了,這家伙是在大公司呆慣了,資源無限,從來不知道體諒下我等窮人的難處,呵呵。不過開源免費的東西也有,像Trac這個就是跟SVN結(jié)合得比較好的工具。但最終還是要有個中心的配置服務(wù)器才方便使用,我這個輕量級的方案(其實是超輕量級的,呵呵),要用這個的話,也得搞個服務(wù)器,弄上Apache+SVN+Trac,或者是用比較流行的Bugzilla,但我對這些都有點不太感冒,說實話,在我的理解中,這些對故障跟蹤的系統(tǒng)用在需求管理上,總還是有點不自在,后期維護用才差不多。
    我更傾向于功能點的劃分,在提交時就是根據(jù)功能點來做,每個功能點提交一個變更集,其他的東西,可以在DVCS內(nèi)部作分支來解決,也就是在每個人的master分支上作團隊同步,個人工作如果習(xí)慣上需要頻繁修改提交,可以在分支上進行,先自行合并到master上,然后再同步。
    這個只允許按功能點提交變更的方法以前在用CVS時試過,效果還不錯,強調(diào)寫好每次的注釋,嚴(yán)格按功能點來做,這樣,我在后期用statCVS統(tǒng)計的時候,也能比較清晰地弄明白各成員的工作量,方便項目總結(jié)時提供相關(guān)圖表給大家,而不是簡單憑印象來評價團隊的工作,造成團隊部分成員的情緒問題。Mercurial HG和Git目前都沒有這類的工具,是個缺憾,但應(yīng)該很快就會有的,這兩類工具的變更集和日志更完善,也支持外部插件,做個統(tǒng)計分析的工具成插件都可以。
    至于團隊間的交流也好辦,大家約好時間,定下會議議程,開個網(wǎng)絡(luò)視頻會議就搞掂了,至于工具,NetMeeting, MSN,還有skype什么的一大堆,關(guān)鍵是如何用好,我傾向于會議主要討論計劃及通報進展,影響全體的技術(shù)問題在會上討論下,否則,技術(shù)問題還是在成員間自由交流比較合適,至于,技術(shù)的共享和培訓(xùn),在前期做下相關(guān)技術(shù)的培訓(xùn),后期團隊成員的項目總結(jié)上作正式的交流比較好,項目進行過程中還是不搞形式上太正式的技術(shù)研討,因為容易流于形式,也不會有太深入的理解,除非是里程碑點出現(xiàn)了嚴(yán)重的偏差需要糾正,否則還是私下交流點實用的經(jīng)驗更合適。

    # re: Git Vs Mercurial hg? 異地協(xié)同開發(fā),分布式SCM方案選擇!  回復(fù)  更多評論   

    2009-11-24 19:10 by saç ekimi
    very useful informations thanks for sharing.They are too neccessary for me. I bookmarked.

    posts - 44, comments - 43, trackbacks - 0, articles - 5

    Copyright © 小李飛刀

    涉足江湖,廣交朋友
    尋找有共同興趣愛好者一起開創(chuàng)掌上移動應(yīng)用!


    歡迎光臨!您是第 hit counter 位訪客。
    主站蜘蛛池模板: 成人午夜视频免费| 黄页网站在线观看免费高清| 免费黄色一级毛片| 99在线在线视频免费视频观看| 日本不卡免费新一二三区| 亚洲黄黄黄网站在线观看| 亚洲AV无码专区在线电影成人| 大陆一级毛片免费视频观看 | 免费A级毛片在线播放不收费| 在线观看日本亚洲一区| 成人片黄网站色大片免费| 亚洲av无码一区二区三区人妖 | 一个人在线观看视频免费| 456亚洲人成影院在线观| 波多野结衣久久高清免费| 亚洲欧美在线x视频| 亚洲精品麻豆av| 一级有奶水毛片免费看| 亚洲AV无码乱码在线观看裸奔| 四虎1515hh永久久免费| 亚洲日本VA午夜在线电影| 亚洲国产成人五月综合网| 免费观看久久精彩视频| 亚洲日日做天天做日日谢| 国产精品免费看久久久久| 中文字幕免费不卡二区| 亚洲一卡2卡3卡4卡乱码 在线 | 91在线老王精品免费播放| 国产成人亚洲合集青青草原精品 | 久久亚洲综合色一区二区三区| ww在线观视频免费观看| 亚洲国产成人久久精品大牛影视| 免费一区二区视频| 成人性生交大片免费看好| 中文文字幕文字幕亚洲色| 亚洲中文无韩国r级电影| 国产精品免费精品自在线观看| 男男gvh肉在线观看免费| 亚洲天堂中文字幕| 亚洲?v女人的天堂在线观看| 一级特黄aa毛片免费观看|