夢(mèng)想飛翔

          自強(qiáng)不息
          posts - 111, comments - 30, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          SVN提交更新的一個(gè)準(zhǔn)則

          Posted on 2013-02-14 19:43 love1563 閱讀(5199) 評(píng)論(9)  編輯  收藏 所屬分類: SVN

          查閱了一下網(wǎng)絡(luò)和博客園,發(fā)現(xiàn)還沒有一個(gè)明確地指導(dǎo)源碼管理提交準(zhǔn)則的相關(guān)文章,因此斗膽整理了一部分自己平時(shí)開發(fā)管理的心得,加上查閱了部分英文資料寫了一個(gè)不算很完善的SVN提交準(zhǔn)則。

           

          負(fù)責(zé)而謹(jǐn)慎地提交自己的代碼

          SVN更新的原則是要隨時(shí)更新,隨時(shí)提交。當(dāng)完成了一個(gè)小功能,能夠通過編譯并且并且自己測(cè)試之后,謹(jǐn)慎地提交。

          如果提交過程中產(chǎn)生了沖突,則需要同之前的開發(fā)人員聯(lián)系,兩個(gè)人一起協(xié)商解決沖突,解決沖突之后,需要兩人一起測(cè)試保證解決沖突之后,程序不會(huì)影響其他功能。

          如果提交過程中產(chǎn)生了更新,則也是需要重新編譯并且完成自己的一些必要測(cè)試,再進(jìn)行提交。

           

          保持原子性的提交

          每次提交的間歇盡可能地短,以一個(gè)小時(shí),兩個(gè)小時(shí)的開發(fā)工作為宜。如在更改UI界面的時(shí)候,可以每完成一個(gè)UI界面的修改或者設(shè)計(jì),就提交一次。在開發(fā)功能模塊的時(shí)候,可以每完成一個(gè)小細(xì)節(jié)功能的測(cè)試,就提交一次,在修改bug的時(shí)候,每修改掉一個(gè)bug并且確認(rèn)修改了這個(gè)bug,也就提交一次。我們提倡多提交,也就能多為代碼添加上保險(xiǎn)。

           

          不要提交自動(dòng)生成的文件

          Visual Studio在生成過程中會(huì)產(chǎn)生很多自動(dòng)文件,如.suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動(dòng)生成,同編譯代碼無關(guān)的文件,這些文件在提交的時(shí)候不應(yīng)該簽入,如果不小心簽入了,需要使用Delete命令從倉庫中刪除。

           

          不要提交不能通過編譯的代碼

          代碼在提交之前,首先要確認(rèn)自己能夠在本地編譯。如果在代碼中使用了第三方類庫,要考慮到項(xiàng)目組成員中有些成員可能沒有安裝相應(yīng)的第三方類庫或者沒有放入GAC(針對(duì).Net Framework)中,項(xiàng)目經(jīng)理在準(zhǔn)備項(xiàng)目工作區(qū)域的時(shí)候,需要考慮到這樣的情況,確保開發(fā)小組成員在簽出代碼之后能夠在統(tǒng)一的環(huán)境中進(jìn)行編譯。

           

          不要提交自己不明白的代碼

          代碼在提交入SVN之后,你的代碼將被項(xiàng)目成員所分享。如果提交了你不明白的代碼,你看不懂,別人也看不懂,如果在以后出現(xiàn)了問題將會(huì)成為項(xiàng)目質(zhì)量的隱患。因此在引入任何第三方代碼之前,確保你對(duì)這個(gè)代碼有一個(gè)很清晰的了解。

           

          提前宣布自己的工作計(jì)劃

          在自己準(zhǔn)備開始進(jìn)行某項(xiàng)功能的修改之前,先給工作小組的成員談?wù)勛约旱男薷挠?jì)劃,讓大家都能了解你的思想,了解你即將對(duì)軟件作出的修改,這樣能盡可能的減少在開發(fā)過程中可能出現(xiàn)的沖突,提高開發(fā)效率。同時(shí)你也能夠在和成員的交流中發(fā)現(xiàn)自己之前設(shè)計(jì)的不足,完善你的設(shè)計(jì)。

           

          對(duì)提交的信息采用明晰的標(biāo)注

          +) 表示增加了功能

          *) 表示對(duì)某些功能進(jìn)行了更改

          -) 表示刪除了文件,或者對(duì)某些功能進(jìn)行了裁剪,刪除,屏蔽。

          b) 表示修正了具體的某個(gè)bug


          評(píng)論

          # re: SVN提交更新的一個(gè)準(zhǔn)則 [未登錄]  回復(fù)  更多評(píng)論   

          2013-02-14 20:50 by Samuel
          你在這里說明了SVN提交的一些準(zhǔn)則,挺好的。但不完整,SVN提交中最重要的一部分,你遺漏了,就是SVN comment的事情,以及相關(guān)的一些準(zhǔn)則。
          SVN comment規(guī)則
          [CODE]開頭,表示:編碼
          [BUG]開頭,表示:修復(fù)BUG
          [PM][DOC]開頭,表示項(xiàng)目管理文檔

          等等,你可以定義自己的規(guī)則

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-15 14:51 by Niko7
          總結(jié)的挺好。以前給新員工培訓(xùn)的時(shí)候講過這個(gè)話題,不過沒想過要發(fā)到網(wǎng)上來,還是你有心。

          我總結(jié)起來,就是要原子性,獨(dú)立性,寫日志。
          就是每次修改肯定有個(gè)目的,每次提交的代碼應(yīng)該能完整的達(dá)到這個(gè)目的,不能把一次修改分成多次提交。這是原子性。在svn里體現(xiàn)為一個(gè)變更集。
          如果改動(dòng)比較多,可以分解為解決問題的若干個(gè)步驟,那么分批次提交,盡量每個(gè)變更集都是目的明確的,不要帶有一石多鳥的效果。這是獨(dú)立性。
          做到這兩點(diǎn),日志就很好寫,然后把日志寫明白。做不到這兩點(diǎn)的話,寫日志可羅嗦了。

          機(jī)器生成的代碼原則上不提交,但是如果是類庫工程,不妨把有里程碑意義的版本的二進(jìn)制成品在svn里留一份。

          關(guān)于多久提交一次,我覺得這個(gè)就太教條了,有時(shí)是幾分鐘提交一次,有時(shí)是幾小時(shí)提交一次。我覺得不必要求每天下班時(shí)要提交。但是上班時(shí)要查看更新是必要的。

          關(guān)于日志,作為一個(gè)團(tuán)隊(duì),盡量要用術(shù)語和符號(hào),這樣可以使日志簡(jiǎn)潔。

          # re: SVN提交更新的一個(gè)準(zhǔn)則 [未登錄]  回復(fù)  更多評(píng)論   

          2013-02-16 22:32 by Samuel
          同意樓上的,剩下就是執(zhí)行和監(jiān)督了。如果能集成一個(gè)WIKI,比如:trac;可實(shí)時(shí)查看SVN的提交的日志。

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-17 10:48 by 九星天辰訣
          這個(gè)準(zhǔn)則希望能應(yīng)用的更廣泛。

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-18 10:58 by 11
          12. /Windchill/db/db.properties check.
          If wt.pom.dbShemaUser=<windchill_install_username> doesn’t exist.
          a. Add site.xconf
          <Property name="wt.pom.dbShemaUser" overridable="true"
          targetFile="db/db.properties"
          value="wtadmin"/>
          b. xconfmanager – p
          c. upgrademanager -cs

          13. Update the Windchill Database to the Current Maintenance Release
          Execute the update tool:
          Windows
          Start Apache

          update_tool -username <username> -password <password> -noui
          UNIX
          Update_Tool.sh -username <username> -password <password> -noui


          14. Please ignore Windchill Business report component and Windchill Business report muliti language component

          15 .If start apache and windchill start normally, but home page can not access and alert error message 404 can not found, Please add a line “Include conf/extra/app-Windchill.conf” into apache/conf/additions.conf

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-19 08:16 by Unmi
          @Niko7
          二進(jìn)制的成品要與工作目錄分開來,一般開發(fā)是在 trunk 下,二進(jìn)制成品放在 release 目錄下。

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-19 08:17 by Unmi
          @Samuel
          有一個(gè)好的查看 SVN 日志的工具是 Crucible, 與 Jira 是一個(gè)公司出品的。

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-02-19 13:04 by Niko7
          @Samuel

          談到監(jiān)督和執(zhí)行,就存在多個(gè)層面了。
          僅僅是對(duì)于上述原則的輔助支持,可以用svn hook來強(qiáng)制寫日志。
          關(guān)于是否可以編譯通過,可以用持續(xù)構(gòu)建。

          如果追求更高的效果,那就是SCM全套了。

          # re: SVN提交更新的一個(gè)準(zhǔn)則   回復(fù)  更多評(píng)論   

          2013-03-22 22:24 by dohkoos
          原子性應(yīng)該不是以時(shí)間來確定,而是由要完成的任務(wù)來確定。譬如修改某個(gè)bug,用了幾天,那也算是符合原子性。

          然后還要重復(fù)下:盡早提交,盡快提交,經(jīng)常提交以及寫commit messages。

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 鄂尔多斯市| 龙山县| 大埔县| 铁岭市| 石阡县| 梅河口市| 正镶白旗| 中牟县| 巴林右旗| 宾阳县| 重庆市| 白山市| 蒙山县| 郧西县| 新野县| 南召县| 张家港市| 郎溪县| 唐山市| 英吉沙县| 澄城县| 县级市| 安丘市| 绥滨县| 普定县| 赣州市| 安平县| 宁强县| 抚远县| 新宁县| 博客| 平远县| 读书| 闸北区| 汉寿县| 贵州省| 永川市| 绥江县| 富平县| 富蕴县| 巴楚县|