會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



(1) 2 »


請教一下關於版本管理的應用
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 92
等級: 8; EXP: 57
HP : 0 / 189
MP : 30 / 5093
離線
小弟目前使用的是TortoiseSVN,因為工作上一般都是個人開發,沒什麼團隊協作,所以只是在local端建個倉庫而已

遇到的問題是這樣的:
我現有一份完整的、已加入版本管理的專案檔,給一片板子使用

現在板子有模組換成新的,線路也有部份變動,但整體功能是一樣的,且兩種板子會一起賣。

因此新的程式須要改變硬體PIN的定義與少部份的流程,但大部份的程式檔是相同的

我的目標是、能區分共用與各別獨立的程式檔案,即如果有一般性的功能要新增,則兩個板子會一起加功能,程式也相同,但有些又是各自獨立的

不知道有沒有哪位先進有這種經驗?我以前使用的大概就是commit、比較新舊檔案差異、偶而rollback,沒有做過這種管理

感覺好像應該開成branch?但這又是一個新的專案...

還請指導一下,這種應用該怎麼處理、或有什麼關鍵字可以找資料

4月18日 10:14:51
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
初級會員
註冊日期:
2013/01/08 14:46
所屬群組:
註冊會員
文章: 23
等級: 3; EXP: 52
HP : 0 / 63
MP : 7 / 824
離線
雖然我不知道在這回答合不合適
不過還是說一下
你需要用的是branch沒錯,你可以參考http://demo.tc/post/715
環境跟SVN多花點時間瞭解可以減少這類的情況發生,寫code的觀念需要改變一下是真的

4月18日 10:49:26
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 92
等級: 8; EXP: 57
HP : 0 / 189
MP : 30 / 5093
離線
感謝您的提示,
其實我比較糾結的是,branch在找到的說明裡,都是對同一個應用(專案)修改用的,最後目標都是合併回主線

我心裡想的是,新板子與舊板子的專案檔其實是同等的地位,只是部份檔案會共用,這時用branch好像感覺新板子的專案檔地位較低的感覺...

您提到的網頁裡,merge可以由主線->支線,也可以由支線->主線,但好像一次就是全部合併,沒辦法只合併部份檔案?(好像只有commit可以選要提交的檔案),即兩塊板子如果有些各自才有的功能時,無法加以區別,一merge就會全部變更

因為這個觀念沒能釐清,所以一直不敢開始用,我再找找關於branch的相關說明,也請先進能再指導一下

4月18日 12:22:55
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
初級會員
註冊日期:
2013/01/08 14:46
所屬群組:
註冊會員
文章: 23
等級: 3; EXP: 52
HP : 0 / 63
MP : 7 / 824
離線
Q1:其實我比較糾結的是,branch在找到的說明裡,都是對同一個應用(專案)修改用的,最後目標都是合併回主線
A:最後目標都是合併回主線,這是因為這是最正常的用法,但如果專案上你沒需要,那何必一定要回主線??


Q2:我心裡想的是,新板子與舊板子的專案檔其實是同等的地位,只是部份檔案會共用,這時用branch好像感覺新板子的專案檔地位較低的感覺...
A:其實我不是很懂為什麼會有這種想法,如果你覺得這樣會混淆使用的話,我在下面補充一下


Q3:您提到的網頁裡,merge可以由主線->支線,也可以由支線->主線,但好像一次就是全部合併,沒辦法只合併部份檔案?(好像只有commit可以選要提交的檔案)
即兩塊板子如果有些各自才有的功能時,無法加以區別,一merge就會全部變更

A:不管主線->支線,還是支線->主線merge一定是全部,這是SVN的觀念,你要單獨更新一定是commit
我猜你因該是用法有錯,你從主線之間切換因該是用switch,觀念不夠熟先不建議用這功能,我在下面補充一下


NOTE:

SVN最當初的目的是因為為了解決多人合作上的問題,所以您有發生一些問題時,建議可以思考一下當別人也有同樣的問題時
但他可能有上百人時,他會怎麼解決?用SVN如何幫助他,這樣SVN觀念會清楚些

關於您Q2的問題,您如過在同等的地位的這問題有困擾,那您應該是要將共用的程式碼當主線,原有的跟新增的都是支線
這樣就不會有這問題了

關於您Q3的問題,正常來說你沒有操作錯誤的話commit只會對你checkout的那一條分支有作用,除非SVN有bug
操作上,我建議您將共用的程式碼當主線,其他板子上的設定當支線然後在不同的資料夾check不一樣的支線
以您來說你有一個共用的程式碼+兩塊板子,就有三個資料夾,您修改共用的部分後,其他要update
但如果您是要修改版子的分支,那就單獨commit

希望有解決您的問題

4月18日 14:38:52
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 92
等級: 8; EXP: 57
HP : 0 / 189
MP : 30 / 5093
離線
感謝您的指導,

我稍微整理一下,以目前的情況,我現有一個已在倉庫中的 專案檔(板子1),使用branch後,得到另一份 專案檔(板子2)

       branch
專案檔(板子1)-------->專案檔(板子2)

接下來兩份專案使用Switch切換後各自commit,只要沒有merge,兩者便再無關聯


如果我想要將共用部份與板子1、2的獨立部份分開,須將原專案檔開兩個branch,分別管理板子1、2的獨立部份:

   ----板子1(branch 1)
共用--|
   ----板子2(branch 2)


兩個分支各自commit,若共用部份有修改,再merge至分支上,然後分支再次commit以完成變更

merge的部份我還要再找一下資料,branch上修改的東西,在trunk merge至branch時,是會被覆蓋還是會顯示衝突讓使用者選擇

這樣觀念不知道有沒有比之前好一點...

4月18日 16:42:40
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
初級會員
註冊日期:
2013/01/08 14:46
所屬群組:
註冊會員
文章: 23
等級: 3; EXP: 52
HP : 0 / 63
MP : 7 / 824
離線
你merge前,SVN會確認有沒有變動,如果你branch比較新,他因該讓使用者選擇,merage我不常用

我的建議是

倉庫
|----共用--------------->公用資料夾,要修改程式碼,直接在這堶悸瑰仵蚼蚹鵅A只有他可以對板子1、2做merge
|
|----板子1(branch 1) --->板子1資料夾,要修改程式碼,直接在這堶悸瑰仵蚼蚹鵅A改完後commit,不要往回對共用、板子2做merge
|
|
|----板子2(branch 2) --->同板子1


這樣板子1、板子2就不衝突了,動作也比較單純
以上是個人看法僅供參考

4月18日 18:07:19
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 92
等級: 8; EXP: 57
HP : 0 / 189
MP : 30 / 5093
離線
感謝指導

我這裡先試用看看,如果有什麼心得再來整理一下~

4月19日 11:47:56
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1155
等級: 29; EXP: 72
HP : 0 / 718
MP : 385 / 27133
離線
個人經驗,

初學者 ,建新的 repository 來放新的 版本

缺點:維護時要記得同時修改兩個 repository 的檔案

方法:善用 araxis merge,檔案差異很容易比較出來



高階應用,如果程式功能都一樣,只有 pin define 不一樣

我會將兩個用 if define 將兩個程式合成一個,並 且在compiler 時,同時compiler出兩個 硬體的hex file.

4月19日 17:42:50
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
初級會員
註冊日期:
2013/01/08 14:46
所屬群組:
註冊會員
文章: 23
等級: 3; EXP: 52
HP : 0 / 63
MP : 7 / 824
離線
我會將兩個用 if define 將兩個程式合成一個,並 且在compiler 時,同時compiler出兩個 硬體的hex file.

關於這個用法,可否提點提點
謝謝

4月19日 19:07:58
轉換PDF檔 列印


Re: 請教一下關於版本管理的應用
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1155
等級: 29; EXP: 72
HP : 0 / 718
MP : 385 / 27133
離線
你要會用 command line / batch 編輯專案

我自己編輯了一個專用的 microchip.bat 及 C18_Revision.bat

專門用來compiler asm 及 c (我不用mplab ide 做 assemble /compile,我用 ultraedit call bat做 assemble/compile)


透過這些指令,我可以compile /assemble 專案,並產生 hex file,

並抓取 svn 的 revision ,將 hex file 以 revision 命名並歸檔
Open in new window

Xxx21 是 rev 21 修改,未 commit成 rev 22
commit 成22 之後,compiler 出來的就會命名成 Rev22

同理,既然能自己控制 compiler / assembler ,多加個 #define 到compiler 成另一個硬體版本是很容易的事

只要你知道如何下指令 compiler

利用 makefile 也能做出不同的compiler

附加檔案:



jpg  svn_x1.jpg (58.65 KB)
467_58f7557781172.jpg 195X782 px

4月19日 20:18:58

Eigen 於 2017年04月19日 20:52:29
轉換PDF檔 列印



(1) 2 »



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project