Manage your WIIMC Source Changes.
Home › Forums › Development › Manage your WIIMC Source Changes.
- This topic is empty.
-
AuthorPosts
-
June 18, 2010 at 7:50 pm #22839cadbuscaParticipant
Here is the process I use with Turtoise to keep things in sync and apply my changes to successive SVN’s. It may be of interest to others.
The process ensures that you changes remain compatible with each SVN, that each change is made individually against the latest SVN with separate patch files created for each change as required by the WIIMC team should you wish to submit them at any time, and that your compiled and installed system will always be cumulative with all your change and up-to-date with the latest SVN, regardless of whether they have been submitted or accepted by the WIIMC team.
The following is also attached as a zip file.
==================================================================================================
Managing Your Changes to WIIMC
==================================================================================================Assuming that you are making personal changes to the WIIMC code, here is the method I use with Turtoise to keep things in sync and apply my changes to successive SVN’s. The process ensures that you changes remain compatible with each SVN, that each change is made individually against the latest SVN with separate patch files created for each change as required by the WIIMC team should you wish to submit them at any time, and that your compiled and installed production system will always be cumulative with all your changes and up-to-date with the latest SVN, regardless of whether they have been submitted or accepted by the WIIMC team.
I utilize a production SD card which has a boot.dol with latest SVN plus all my completed and verified changes, and a development SD card which depending on where I am in the process contains a boot.dol with the latest SVN plus just the change I am working on, or the latest SVN plus all my changes.
This allows me to compare the output of the production version, with that of the development version at any time during the change development process.Here’s why it is important to follow this set procedure. While Turtoise does allow you to create a patch file of all the changes that you have made to any base SVN working copy, which you can then apply to any base SVN working copy to reflect that patch, it does not allow you to remove that individual patch. It only allows you to remove all the patches applied to a base SVN working copy. And so if you make new changes to a working copy that contains previous patches, there is no way to remove those previous changes and just be left with the new changes in order to make a new patch with just those changes. Hence you must always revert to a base SVN working copy before starting a new change. If a new change is dependent on a previous change then it should be applied and then replaced by the new patch which will then contain both the previous and new changes.
Note: Assuming you “Checked Out” to “C:WIIMC”, all the “create…patch files” instructions below are performed in explorer against “C:WIIMCsource” with a “right-click/TurtoiseSVN/create patch”, all the “revert the changes” with “right-click/TurtoiseSVN/revert/select all”, and all the “apply the patch” with “right-click/TurtoiseSVN/apply patch” which will open TurtoiseMerge, and allow you to select the patch, check it and either EXIT or SAVE it.
Start with an existing TurtoiseSVN Working Copy which may be the initial Checkout copy if you are just starting or one with all your changes to date.
GET THE PROCESS STARTED
=======================
0) Checkout your initial TurtoiseSVN Working Copy or if you already have changes to an existing Working Copy source (! icon) create a P000-SUM.patch file for them. (nnn=000)PREPARE YOUR CURRENT WORKING COPY FOR NEW DEVELOPMENT
=====================================================
1) Revert any changes out of your source to get your Working Copy back to your previous SVN release.
2) Update C:WIIMC to the latest SVN Release using “right click/SVN Update”.
3) If there were no updates to the source, jump to step 6) otherwise apply any changes to the new SVN as follows:
4) For each existing Pnnn-change.patch file up to the current nnn, do the following:
4a) Apply the patch, verify it will merge correctly, and EXIT. DO NOT SAVE IT!
(if you Save by mistake, just go back to Turtoise and revert the changes.)
4b) If the change is no longer needed because it has been accepted into the new SVN, delete that Pnnn-change.patch file.
4c) If a patch is no longer correct, save the conflicting module, make the necessary changes to the source code, save them and create a new Pnnn-change.patch file (nnn=nnn+1), then revert any changes, and delete the incorrect Pnnn-change.patch file.
4d) Repeat from 5) for each Pnnn-change.patch file.
5) Now that all of your changes have been verified & updated for the latest SVN, do the following:
5a) Apply and SAVE all of the verified patches plus any new updated ones.
5b) Create a Pnnn-SUM.patch file which reflects all your prior changes to the latest SVN up to nnn, and can be viewed to reference the location of any of your changes.
5c) Compile the latest release with all your changes and install on your production sd card.
5d) Revert all your changes to create a bare new SVN Working copy for making new changes.DEVELOP A CHANGE TO LATEST SVN
==============================
6) Create a set of changes for one problem/feature, compile them & test with development SD card.
7) Create a Pnnn-change.patch file (nnn=nnn+1) for that change, where “change” is descriptive of the change.
8) Apply the last Pnnn-SUM.patch file, verify no conflicts with your previous changes, and SAVE it.
9) Compile this latest SVN with all your changes and test with development SD card.
(Rename the previous version. I use boot.dol-Pnnn )
10) Optionally install this updated boot.dol on your production sd card.
11) Optionally submit the Pnnn-change.patch file for approval as an attachment to a new tracker item.
12) Create a new Pnnn-SUM.patch file which reflects all your changes to the latest SVN.
13) When ready to work on a new set of changes go back to 1)This process will give you a set of individual Pnnn-change.patch files verified valid for the latest SVN, plus Pnnn-SUM.patch files cumulative to each level of change, and because of the Pnnn header, they will all be consecutive in yor directory listing.
Example:
========
Assume you Checkout or have an existing r54 Working copy and make 3 patches and submit them. Then you find a new SVN58 is available which contains patch #2 and other changes made to the new SVN that conflict with patch #3. The objective is to update your patches to be consistent with the new SVN, and prepare a base for making change #5 to that SVN.a) Per 0) Checkout or create P0-SUM.patch for existing changes to r54 — N=0 WC=r54
b) Per 6-11) Create P1-Change.patch, Submit P1-Change.patch — N=1 WC=r54+1
c) Per 12) Create P1-SUM.patch — N=1 WC=r54+1
d) Per 1) Revert All changes to Get back to Base r54 SVN — N=1 WC=r54
e) Per 6-11) Create P2-Change.patch,Apply P1-SUM.patch,Submit P2-Change.patch– N=2 WC=r54+1+2
f) Per 12) Create P2-SUM.patch — N=2 WC=r54+1+2
g) Per 1) Revert All changes to Get back to Base r54 SVN — N=2 WC=r54
h) Per 6-11) Create P3-Change.patch,Apply P2-SUM.patch,Submit P3-Change.patch — N=3 WC=r54+1+2+3
i) Per 12) Create P3-SUM.patch — N=3 WC=r54+1+2+3
j) Per 1) Revert All changes to Get back to Base r54 SVN — N=3 WC=r54
k) Per 2) Update to Base r58 SVN — N=3 WC=r58
l) Per 4a) Apply P1-Change.patch, Verify and EXIT — N=3 WC=r58
m) Per 4a) Apply P2-Change.patch, See it is now included in SVN, and EXIT — N=3 WC=r58
n) Per 4b) Delete P2-Change.patch — N=3 WC=r58
o) Per 4a) Apply P3-Change.patch, See it is now incorrect and EXIT — N=4 WC=r58
p) Per 4c) Fix it and Create P4-Change.patch, and Delete P3-Change.patch — N=4 WC=r58
q) Per 5a) Apply Remaining P1-Change.patch and P4-Change.patch — N=4 WC=r58+1+4
r) Per 5b-c) Create P4-SUM.patch & Compile Cumulative P4-SUM boot.dol — N=4 WC=r58+1+4
s) Per 1) Revert All changes to Get back to Base r58 SVN — N=4 WC=r58
t) Per 6-11) Create P5-Change.patch,Apply P4-SUM.patch,Submit P5-Change.patch — N=5 WC=r58+1+4+5
u) Per 12) Create P5-SUM.patch — N=5 WC=r58+1+4+5
v) Per 2) Revert All changes to Get back to Base r58 SVN — N=4 WC=r58
w) Per 6-11) Make additional changes -
AuthorPosts
- You must be logged in to reply to this topic.