夢(mèng)想飛翔

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

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

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

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

           

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

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

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

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

           

          不要提交不能通過(guò)編譯的代碼

          代碼在提交之前,首先要確認(rèn)自己能夠在本地編譯。如果在代碼中使用了第三方類庫(kù),要考慮到項(xiàng)目組成員中有些成員可能沒(méi)有安裝相應(yīng)的第三方類庫(kù)或者沒(méi)有放入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)了問(wèn)題將會(huì)成為項(xiàng)目質(zhì)量的隱患。因此在引入任何第三方代碼之前,確保你對(duì)這個(gè)代碼有一個(gè)很清晰的了解。

           

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

          在自己準(zhǔn)備開始進(jìn)行某項(xiàng)功能的修改之前,先給工作小組的成員談?wù)勛约旱男薷挠?jì)劃,讓大家都能了解你的思想,了解你即將對(duì)軟件作出的修改,這樣能盡可能的減少在開發(fā)過(guò)程中可能出現(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)則 [未登錄](méi)  回復(fù)  更多評(píng)論   

          2013-02-14 20:50 by Samuel
          你在這里說(shuō)明了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í)候講過(guò)這個(gè)話題,不過(guò)沒(méi)想過(guò)要發(fā)到網(wǎng)上來(lái),還是你有心。

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

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

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

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

          # re: SVN提交更新的一個(gè)準(zhǔn)則 [未登錄](méi)  回復(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)制的成品要與工作目錄分開來(lái),一般開發(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來(lái)強(qiáng)制寫日志。
          關(guān)于是否可以編譯通過(guò),可以用持續(xù)構(gòu)建。

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 西乡县| 云霄县| 玉林市| 崇礼县| 平凉市| 灵丘县| 遂川县| 马关县| 双城市| 琼海市| 古田县| 察隅县| 墨玉县| 晋中市| 宁河县| 通渭县| 石家庄市| 汾西县| 伊川县| 泰宁县| 绍兴市| 栾川县| 临泉县| 清丰县| 琼中| 烟台市| 高清| 巨野县| 伽师县| 湖南省| 漳州市| 雅江县| 长沙县| 天峻县| 池州市| 伊金霍洛旗| 泸溪县| 万载县| 六安市| 昌乐县| 潜江市|