Edgewall Software

Changes between Version 37 and Version 38 of TracProject/DefaultWikiPages


Ignore:
Timestamp:
Aug 5, 2012, 9:26:30 PM (12 years ago)
Author:
Christian Boos
Comment:

refresh the maintenance guide to the reflect the current practices

Legend:

Unmodified
Added
Removed
Modified
  • TracProject/DefaultWikiPages

    v37 v38  
    44This page is used to keep track of the informal review process of the default pages, which happens every once in a while, usually shortly before a new major release.
    55
     6See also the discussion in [[0.12#ReviewGuidelines]].
     7
    68=== Page list
    79''This list only provided for convenience. See [source:/trunk/contrib/checkwiki.py#latest checkwiki.py] for the official list of wiki pages to be included in releases.''
    810
    9 The following table lists the pages that will be included in the next [milestone:0.13] release, and the name of the person who proof-read and possibly updated/corrected that page.
     11The following table lists the pages that will be included in the next [milestone:1.0] release, and the name of the person who proof-read and possibly updated/corrected that page.
    1012
    1113||= Page ||= Proof-read ||= Comments ||
     
    4042|| TracQuery                  || || ||
    4143|| TracReports                || || ||
     44|| TracRepositoryAdmin        || || ||
    4245|| TracRevisionLog            || || ||
    4346|| TracRoadmap                || || ||
     
    6770
    6871=== Status ===
    69 Next review will be for the [milestone:0.13] release (still under development).
     72Next review will be for the [milestone:1.0] release (in beta).
    7073
    7174
    7275== Life-cycle of the default wiki pages #lifecycle
    7376
    74 In the following, we call "0.X" the current stable version.
     77A "backup" of the toplevel pages for the previous major releases is present in the wiki page hierarchy [[0.11/]], [[0.12/]].
    7578
    76 === Status quo
     79The toplevel pages (TracGuide and related) correspond to the documentation for the current stable release (1.0) and the minor maintenance releases (1.0.x).
    7780
    78 The TracGuide pages present at the toplevel of the project correspond to the current stable version 0.X.
     81Likewise, upcoming changes will be prepared below the [[1.1/]] page hierarchy (dev pages). Pages are created there as needed, when a new feature or change in behavior needs to be documented, the first version being a copy of the content of the corresponding toplevel page.
     82
     83
     84=== Life-cycle of the wiki pages for Trac 0.12 (LTS)
     85
     86The TracGuide pages for [[0.12/]] are not likely to change much, but just in case...
    7987
    8088Their content is usually matching the one which has been shipped in the corresponding release, except for:
    8189 - a banner mentioning the current version and linking to the page corresponding to the //previous// release (e.g. for TracWiki: **Note: this page documents the 0.12 version of Trac, see [[0.11/TracWiki]] if you need the previous version**)
    82  - the edits users have made in the meantime, which will be reviewed and integrated in the next minor and major releases (see [#sync] below)
     90 - the edits users have made in the meantime, which will be reviewed and integrated in the next minor releases 0.12.x.
    8391
    84 So a "backup" of the toplevel pages for the previous major release is present in the wiki page hierarchy below `0.(X-1)/`.
     92=== How to maintain the 0.12 wiki pages in sync? === #sync012
    8593
    86 Likewise, upcoming changes are prepared below the  `0.(X+1)/` page hierarchy (dev pages). Pages are created there as needed, when a new feature or change in behavior needs to be documented.
     94We use a secondary DVCS for doing the sync, edit and merge.
     95For example, in the repos:cboos.hg repository:
     96 - repos:cboos.hg:trac-guide-teo-0.12-prefix contains the snapshots of the raw content of the [[0.12/]] pages, as obtained via:
     97   {{{
     98$ cd 0.12-stable/trac/wiki/default-pages
     99$ python ../../../contrib/checkwiki.py -d -C -p 0.12
     100   }}}
     101 - repos:cboos.hg:trac-guide-0.12 is the integration branch for the changes from t.e.o; changes that should not been merged in are discarded (once), like the version specific banner, the static content replacing macro expansions, etc.
     102
     103Once the initial setup is done, all what is needed is usually:
     104 - get a new batch of changes from t.e.o
     105 - inspect the changes, if there's anything that need to be fixed, change it in the wiki, iterate
     106 - commit on `trac-guide-teo-0.12-prefix`
     107 - switch to `trac-guide-0.12`, merge from `0.12-stable`, merge from `trac-guide-teo-0.12-prefix`
     108 - commit in svn
     109
     110=== Migrating to a new major release
     111
     112When the time of a new major release `X` is getting near (usually at the time of the beta), the toplevel pages are copied to `(X-1)/...` as a backup.
     113Some care should be taken about replacing the dynamic content found in TracAdmin, TracIni, TracSyntaxColoring (starting with 0.12) and WikiMacros by the output generated by the previous version of Trac .
     114
     115The changes that occurred in a toplevel page since the corresponding `X/` page has been created are eventually ported, if those changes are also relevant for the new major version.
     116
     117Then the `X/` pages are copied to toplevel, with the appropriate change in the warning banner.
     118
     119All toplevel pages are reviewed and updated as needed for the new version `X`.
     120
     121The `X/` pages won't be touched anymore until we'll prepare the migration to the `(X+1)/` release and make a "backup" of the default pages below `X/` (thereby overwriting the old dev pages).
     122
     123The `(X+1)/` dev pages can be created anytime after the `X` release.
    87124
    88125
    89 === When migrating to a new major release
     126=== How to maintain the default wiki pages in sync? === #sync
    90127
    91 When the time of a new major `0.(X+1)` release is getting near (usually at the time of the beta), the toplevel pages are copied to X/... as a backup.
    92 Some care should be taken about  replacing the dynamic content found in TracAdmin, TracIni, TracSyntaxColoring (starting with 0.12) and WikiMacros by the output generated by Trac `0.X`.
    93 
    94 The changes that occurred in a toplevel page since the corresponding `0.(X+1)/` page has been created are eventually ported, if those changes are also relevant for the new major version.
    95 
    96 Then the `0.(X+1)/` pages are copied to toplevel, with the appropriate change in the warning banner.
    97 
    98 All toplevel pages are reviewed and updated as needed for the new version X.
    99 
    100 The `0.(X+1)` pages won't be touched anymore until we'll prepare the migration to the `0.(X+2)` release and make a "backup" of the default pages below `0.(X+1)/` (thereby overwriting the old dev pages).
    101 
    102 The `0.(X+2)/` dev pages can be created anytime after the `0.(X+1)` release.
    103 
    104 === How to maintain the default wiki pages in sync? === #sync
    105  ''the following section corresponds to the 0.11 / 0.12 period; need to be updated to take advantage of the Mercurial mirrors''
    106128As some content is only pertinent on t.e.o and not in the packaged docs, downloading new content from t.e.o will lead to repeated merge, so we need a system that can handle them efficiently.
    107129
    108 Here's how to set up such an environment using [http://www.selenic.com/mercurial/wiki Mercurial]:
    109 ==== Initial Setup ====
    110 {{{
    111 $ svn checkout http://svn.edgewall.org/repos/trac/branches/0.11-stable/ guide-0.11
    112 $ cd guide-0.11
    113 $ hg init
    114 $ cp /tmp/trac.hgignore .hgignore
    115 $ hg addremove
    116 $ hg commit -m "Start sync with branch 0.11-stable [T70xx]"
    117 $ (cd trac/wiki/default-pages; \
    118    python ../../../contrib/checkwiki.py -d; dos2unix *)
    119 $ hg branch wiki-guide   # (1)
    120 $ hg commit -m "Those are the un-processed changes from t.e.o wiki"
    121 $ hg update -C 0         # (2)
    122 $ hg branch repo-guide   # (3)
    123 $ hg merge wiki-guide
    124 }}}
    125 Notes:
    126  1. mark the future commit to be on named branch "wiki-guide", the symbolic
    127     name for the branch tracking the raw changes made by contributors in
    128     the t.e.o wiki
    129  2. switch back to revision '''0''', the one which was in sync with the svn branch
    130  3. mark the future commit to be on named branch "repo-guide", the symbolic
    131     name for the branch tracking the changes we will commit in the svn branch
     130We do that pretty much the same way we already described above for [#sync012 0.12].
    132131
    133 Now at this point, carefully review the changes and revert everything you don't want to see merged in the repository. This is the tedious part, but once you've taken a decision to not merge some changes, you won't be asked to take this decision over and over again in ''future'' merges.
     132For example, in the repos:cboos.hg repository:
     133 - repos:cboos.hg:trac-guide-teo contains the snapshots of the raw content of the toplevel pages, as obtained via:
     134   {{{
     135$ cd trunk/trac/wiki/default-pages
     136$ python ../../../contrib/checkwiki.py -d -C
     137   }}}
     138 - repos:cboos.hg:trac-guide-1.0 is the integration branch for the changes from t.e.o; changes that should not been merged in are discarded (once), like the version specific banner, the editing caveats, etc.
    134139
    135 Once you're happy with how the changes look like, commit them:
    136 ==== Commit Changes ====
    137 {{{
    138 $ hg ci -m "Merged contributions (2008-05-08)"
    139 $ svn ci -m "TracGuide [milestone:0.11]: sync changes from the wiki (2008-05-08)"
    140 }}}
    141 While there's a timestamp anyway associated to the changeset, I find it convenient to put the date prominently in the commit message as well.
     140Once the initial setup is done, all what is needed is usually:
     141 - get a new batch of changes from t.e.o
     142 - inspect the changes, if there's anything that need to be fixed, change it in the wiki, iterate
     143 - commit on `trac-guide-teo`
     144 - switch to `trac-guide-1.0`, merge from `trunk`, merge from `trac-guide-teo`
     145 - commit in svn
    142146
    143 Now, the interesting things begin. Next time you decide to sync, things will be quite easy:
    144 ==== Repeat Merge ====
    145 {{{
    146 $ cd guide-0.11
    147 $ hg update -C wiki-guide
    148 $ (cd trac/wiki/default-pages; \
    149    python ../../../contrib/checkwiki.py -d; dos2unix *)
    150 $ hg ci -m "Downloaded changes 2008-05-09"
    151 $ hg update -C repo-guide
    152 $ hg merge wiki-guide
    153 }}}
    154 At this point, you will have only the ''new'' changes in your repository.
    155 Review them. If there's a need to "forget" some changes that only make sense on t.e.o, you can use `hg revert trac/wiki/default-pages/TracTickets`.
    156 If there's a typo or a wrong information, then take this occasion to fix it in the Wiki itself, then [#RepeatMerge restart the above procedure] (back on the "wiki-guide" branch, get new changes you just did on t.e.o, commit, switch to "repo-guide" and merge again).
    157 
    158 Once you're happy, [#CommitChanges commit the changes] both locally on the "repo-guide" integration branch and on the 0.11-stable branch.
    159 
    160 Also, in the (rare) event of a Wiki page move, this has to be tracked manually both at the svn and at the hg level, e.g.:
    161 {{{
    162 $ cd trac/wiki/default-pages
    163 $ svn mv TracWikiMacros WikiMacros
    164 $ hg mv --after TracWikiMacros WikiMacros
    165 }}}
    166 
    167 New pages as well, once they have been added to the checkwiki.py script and downloaded:
    168 {{{
    169 $ cd trac/wiki/default-pages
    170 $ svn add TracVersionControl
    171 $ hg add TracVersionControl
    172 }}}
    173 
    174 '''Note:''' as I went through all those steps again, I noticed that there are actually quite few discrepancies at this point (i.e. near 0.11rc time) between the wiki guide and the default-pages in the repository.
    175 
    176 This is not always the case, particularly when we're quite advanced in the release cycle of a new version and the online guide still documents the previous stable version. At those times, the above method is far from overkill, quite the contrary it makes it relatively easy to grab the useful contributions from the Wiki.
    177 
    178 Note also that this method is scalable, and that it can easily be used for tracking ''several'' sources. For [milestone:0.12], we could track the toplevel changes ("wiki-guide" branch in the above), as well as the 0.12 specific pages (0.12/..., in another "wiki-0.12-guide" branch).
    179 
     147Note that porting changes from 0.12 to 1.0 happens quite naturally when we port over the changes from [source:branches/0.12-stable] to [source:trunk], //but this happens only in the repository//, the toplevel pages on t.e.o won't contain these changes. It might be useful from time to time to do a sync the other way round.