using bzr with many small Python modules, forgetful person, and version numbers
Eric S. Johansson
esj at harvee.org
Sun Dec 31 13:55:21 GMT 2006
Jan Hudec wrote a very nice answer:
> On Sat, Dec 30, 2006 at 06:49:45PM -0500, Eric S. Johansson wrote:
>> short question: How can a forgetful person use bzr to track revisions of
>> Python modules and simultaneously update the module version number
>> automatically? (i.e. setup(...,version="1.10",...)) in setup.py)
...
>
> In bzr, there is only version for the whole tree. That is a feature.
> In fact even you want it, because if the modules are more than one file
> (as yours seem to be) you don't want to see change in one of them and
> not the related change in the other.
true. Looking over the current set of seven modules, all but one has
two files, the code and set up.
>
>> if the answer is move the modules and make it one module per
>> repository/branch, how does one split up an existing repository.
>
> Yes, it indeed is. Make a branch for each module and delete all but that
> module in that branch.
I think this is where I'm having a bit of difficulty. Making a
repository/branch for two files seems a bit silly. Are there any
advantages to a multi-branch repository. I understand that any other
route induces significant complications so I shall follow your
recommendation and continue to be amused at issues of scale (both upward
and downward).
>> Also a related question, how does one make multiple repositories
>> available via the built-in server?
>>
>> Your guidance is most appreciated.
>
> IIRC (but I never actually used it), the builtin server provides access
> to it's working directory *and below*. Therefore if you run it from a
> directory where the branches you want to serve are subdirectories, it
> should allow access to all of them. Ie. if you have a directory
> containing subdirs 'a' and 'b', which are branches, and run a 'bzr
> serve' there, you should be able to access them as 'bzr://host:port/a'
> and 'bzr://host:port/b' respectively.
okay, I will give that a try. Originally I was hoping to use my
standard Web server (Cherokee) but it seems to have problems with bzr
> You can also use the server through ssh (the bzr+ssh: protocol), which
> has the advantage that ssh provides authentication. There the server
> will be automatically run in the directory you want.
I was going to use the built-in server to provide anonymous access for
branches. The SSH route I was going to use for contributors I trust.
This is a great place for virtual machines. You put your repository on
the virtual machine, provide direct SSH access, and if anyone decides to
be an ass, you nuke the virtual machine (assuming you kept proper
backups), and start over. Failing that, you need some sort of no shell
ssh access that can run bzr.
Thanks again for your response. For what it's worth here's the modules
I currently have extracted from other projects of mine.
cookie_authentication
implementation of the model from: "dos and don'ts of client
authentication on the Web". http://cookies.lcs.mit.edu cookie recipe
from section 4.1
portalocker
very simpleminded file locker from active states Python cookbook. What
I really needed was a systemwide semaphore. What I say. I was in a hurry.
dbm_utils
a wrapper around Python DBM methods. Very simpleminded, locks on write.
postfix_transport
read the postfix transport file and for a given e-mail address, return
the destination host.
union_config
supplies union of a set of configuration files.
file_queue
persistent queue built on top of the file system. entries have state
and are retrieved by state and order.
multi_auth
authenticate via one of multiple means. Currently supports IMAP,
system, and built-in authentication sources. there are probably better
methods of doing this but it's evolved over the past four years and it's
real simple to use.
More information about the bazaar
mailing list