Hello,
I was wondering if some people already had the idea of
setting some kind of
'pull-only-changed' model for cvs update.
I know available methods (cvssync, anoncvs and cvsup) are
full pull-model,
where we compare the full local cvs copy with the whole
remote repository,
which is :
- time and network consuming for the user
- bandwidth and load consuming for the server
Nowadays, we have various methods to be aware of changes in
the repository,
the first coming to mind being subscribing to
src-changes and
ports-changes , or refreshing a RSS for a more
"user-level" view. For
example, i know the man running freshbsd.org uses ruby and a
set of procmail
filters to update his website. This becomes more a
'push-like' model
So, basically, the idea would be :
1) parse (perl !) upon mail reception the *-changes
ml-output, gather
Modified/Added/Removed/Imported files/directories
2) put them in a queue/file
3) use you traditional cvs update method to update _only_
modified parts of
the tree, either manually or with an other cronjob
4) empty the queue
Is it worth trying it, or cvs is already designed to be the
least
time/bandwith-consuming possible, and the gain would be near
to zero ?
I know this proposal assumes that your tree is always
near-up-to-date, or
that you run manual updates if changes are not received in a
period of time
or update fails, otherwise it may lead to a tree being sync
only for some
parts, and other parts being out-of-sync. May this idea lead
to errors in
cvs internal files ?
What methods guys are you using ? Normal automated anoncvs
up ? Manually
update only changed parts ? Is the load on anoncvs servers
neglectable ?
If it has already been discussed, sorry for being lame..
Thanks for any comments/input,
Landry
|