Thank you all for your recommendations. Though I have reservations about
frequent merges, maintaining separate branches (a la Reinelt) seems the
most flexible and resilient approach in this particular case.
Using a separate repository would work well for config files, I agree,
but not so well for core code modules. And the externals approach only
supports folders, not individual files, an unfortunate limitation.
On Fri, 25 Jan 2008 08:46:45 -0600, "Jim Thompson"
> Michael Reinelt wrote:
> > Hi there,
> > Srilakshmanan, Lakshman schrieb:
> >> Refer to external
> >> http://svnbook.red-bean.com/en/1.4/svn.advanced.externals.html
> > I don't think that this is was Nathaniel was asking for...
> >>> I'm managing a single project for several clients. The software should
> >>> function identically for each client, but a few code modules must be
> >>> implemented differently for each client's database environment.
> > That's exactly what I am doing here.
> > I keep all the "common" files in trunk, and I have a branch for every
> > customer, which contains the files from trunk plus the
> > customer-specific extension.
> > I have a lot of duplicate files (every file from trunk is duplicated
> > in every branch), but as this are "cheap copies", this doesn't hurt
> > too much. OTOH, this has the advantage of having the possibility to
> > change a common file in a branch, test it in the customer environment,
> > and decide if the change should be backportet to trunk (and in a 2nd
> > step to every branch).
> > SOmetimes I decide that a customer-specific file should no longer
> > customer-specific but common, so I simply copy it to trunk. Sometimes
> > I decide it has to be the other way round (a former common file
> > becomes customer-specific): I simply delete it from trunk.
> > To maintain all this stuff, I wrote several scripts that compare the
> > common files from trunk with all branches, and suggests diffs and/or
> > merges (based on 'svn diff --summarize')
> > One drawback is that every change to trunk results in a diff for every
> > branch (and I got about 20 branches), so the commits (and the
> > repository itself) becomes quite big. A proper solution would be a
> > "svn replace" instead of a "svn merge", but I couldn't find the time
> > to improve my scripts to to this (apart from the fact that there is no
> > "svn replace" command)
> > HTH, Michael
> We have not implemented yet, but we're facing a related issue and are
> considering yet another approach.
> We'll have a number of config files which often have different contents
> for each environment (e.g., development, test, QA, production, etc.) and
> each environment will typically connect to different DBs - so the config
> files may have stuff like IDs and passwords. We're expecting to use two
> svn repositories (or at least separate sections) with tighter access
> restrictions for the config files.
> Since these config files may be found in directories that already have
> "regular" (not environment-specific) files, it doesn't seem like
> defining externals will work in this case. We'll likely use a script
> that will run two main phases:
> 1) svn checkout/export/switch/update (choose the desired command when
> running the script) - from the "regular" repo
> 2) svn export --force - from the config repo
> The default for step 2 is to export the "template" configs (vs. dev,
> test, qa, prod, etc.) which should be "sanitized" (e.g., contain no
> actual passwords), so we can share our code (when the spirit moves us)
> without compromising (or having to manually scrub) any sensitive data.
> We could also easily identify the location of all the config files that
> another user of our (open source) code would need to modify.
> The script might also help with automation of our deployment process,
> although much of that might be moving toward Maven.
> To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
> For additional commands, e-mail: users-help_at_subversion.tigris.org
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-01-28 23:07:39 CET