how does customised subversion.conf work

Asked by Dean Nicholls

I am attempting to use bzr-svn to interact with my svn repos. Personally I would just move to bzr (or git, the other candidate), but I have coworkers who will only let me pry tortoise out of their dead cold fingers.

Our repos is non standard - very non standard. We use it to track various items, however I only *really* want to track our code. I have read the README, tried to analyse mailing lists and searched google, but I just cannot grok how to set up bzr-svn for non standard layouts.

Our layout is:

/--------| --- src --- | --- vanilla (trunk in svn terms)
         | | --- csm_branches --- [various branches based of trunk] (branches in SVN terms)
         | | --- developer_branches --- [private branches] (these not to be tracked in bzr svn)
         | | --- tags (as in SVN)
         |
         | ---- docs --- [doc stuff - not to be tracked in bzr ]
         | ---- other things --- [not to be tracked]

Basically just want bzr-svn to track "vanilla" as the trunk, "tags" as the tags and "csm_branches" as branches. Is this even possible? I can do it in git, but the git way is well, a little messy, and would really like to give bzr a crack - mainly because I think it might be a better horse in the long run, and I might be able to wean my windows guys off tortoise and put SVN in the hole it belongs.

FYI we actually do most of the work in the branches, and use vanilla as a vendor drop. That's why the branches are important.

Any pointers would be gratefully accepted.

Cheers
Dean.

Question information

Language:
English Edit question
Status:
Solved
For:
Bazaar Subversion Plugin Edit question
Assignee:
No assignee Edit question
Solved by:
Dean Nicholls
Solved:
Last query:
Last reply:
Revision history for this message
Jelmer Vernooij (jelmer) said :
#1

You can set the "scheme" that should be used by running
'bzr svn-branching-scheme --set <url>' and then specify a list of branch names, one on each line.

Revision history for this message
Dean Nicholls (dean-redblufftech) said :
#2

Jelmer

Thank You for your prompt response. This pretty much addressed getting the branches down as individual branches. i think I was looking for complexity that was not there.

I not sure if this is the appropriate place to carry this on, but I can raise a bug if required - however the bug root cause could be PEBKBAC. basically the way I planned to work was:
1) Get the branches from SVN - (these I would consider pristine, and only used for pulling and pushing to SVN)
2) Branch off working branches as needed from the ones fetched above (whether for fixes or requests)
3) merge them into the main copies (the SVN branches) when ready
4) Push to the SVN repos, and pull as required (similar to your .png example of push to svn).

My theory is that I use BZR operations as much as possible, and only use SVN as a push target for fully merged sources (I not sure if this is the correct approach, but itś the one I use with GIT)
It all went swimmingly, until I tried to push to the SVN repos.

I ran 2 different scenarios.
The first was as described above. I branched out, made changes, merged back in, pulled from SVN, merged and resolved conflict, and then went to push. It went BOOM.
The second, I simply used one of my other SVN branches and made a text change and then tried to push. I got the same result, which was:

dean@feisty:~/work/bzr_repose/R6v6$ bzr push https://<email address hidden>/test/csm_branches/R6v6
HTTP <email address hidden> Realm: 'test' password:
bzr: ERROR: exceptions.NotImplementedError:

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 817, in run_bzr_catch_errors
    return run_bzr(argv)
  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 779, in run_bzr
    ret = run(*run_argv)
  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 477, in run_argv_aliases
    return self.run(**all_cmd_args)
  File "/usr/lib/python2.5/site-packages/bzrlib/builtins.py", line 804, in run
    push_result = br_from.push(br_to, overwrite)
  File "/usr/lib/python2.5/site-packages/bzrlib/decorators.py", line 127, in read_locked
    return unbound(self, *args, **kwargs)
  File "/usr/lib/python2.5/site-packages/bzrlib/branch.py", line 1556, in push
    _override_hook_source_branch=_override_hook_source_branch)
  File "/usr/lib/python2.5/site-packages/bzrlib/branch.py", line 1598, in _push_with_bound_branches
    result = self._basic_push(target, overwrite, stop_revision)
  File "/usr/lib/python2.5/site-packages/bzrlib/branch.py", line 1617, in _basic_push
    target.update_revisions(self, stop_revision)
  File "/home/dean/.bazaar/plugins/svn/branch.py", line 350, in update_revisions
    stop_revision)
  File "/home/dean/.bazaar/plugins/svn/repository.py", line 311, in lhs_missing_revisions
    if self.has_revision(revid):
  File "/home/dean/.bazaar/plugins/svn/repository.py", line 463, in has_revision
    (path, revnum, _) = self.lookup_revision_id(revision_id)
  File "/home/dean/.bazaar/plugins/svn/repository.py", line 743, in lookup_revision_id
    for (branch, revno, _) in self.find_branches(scheme, last_revnum):
  File "/home/dean/.bazaar/plugins/svn/repository.py", line 1032, in find_branches
    elif scheme.is_branch_parent(p) or \
  File "/home/dean/.bazaar/plugins/svn/scheme.py", line 81, in is_branch_parent
    raise NotImplementedError
NotImplementedError

bzr 0.90.0 on python 2.5.1.final.0 (linux2)
arguments: ['/usr/bin/bzr', 'push', 'https://<email address hidden>/test/csm_branches/R6v6']

** please send this report to <email address hidden>

I got this the first time for scenario 1. For scenario 2 first I got:
dean@feisty:~/work/bzr_repose/R6v6/spdh$ bzr push https://<email address hidden>/csm_branches/R6v6
bzr: ERROR: Transport operation not possible: http does not support mkdir()

Then when I went out of the directory and back in, I got the not implemented issue as above.

If appropriate I can raise this as a bug.

Revision history for this message
Jelmer Vernooij (jelmer) said :
#3

This is actually bug 144357, which has been fixed in the development branch of bzr-svn.

Revision history for this message
Dean Nicholls (dean-redblufftech) said :
#4

OK, I feel better now :)

I grabbed your bzr.dev branch and loaded it up. It took a while to come down, which was interesting...

Anyhow, loaded it in and tried the push....

and it worked OK - on both of the scenarios.

The only thing I got was a message saying:
Unable to load plugin 'svnstable'
This message seems pretty self explantory, I just hoping this plugin is not essential for anything, I could not find references to it in the usual places. I will probably delete and rebranch my SVN repos using the dev code and see how it goes after pushing through some dodgy (ie needing conflict resolution) merges and pushes/pulls on my test branches, and see what it looks like.

However, everything seemed to work OK - so I think as far as this question is concerned, it's game over.
Thanks for your prompt help with this stuff.

Cheers
Dean.

Revision history for this message
Jelmer Vernooij (jelmer) said :
#5

Do you perhaps happen to have a 'svnstable' directory or symlink in ~/.bazaar/plugins ?

Revision history for this message
Dean Nicholls (dean-redblufftech) said :
#6

Heh - I do. Talk about PEBKBAC, I thought rather than deleting the stable version I would save it away to a safe place, just in case the development version caused me other issues.

Of course being a bzr n00b, I forgot that saving it in the plugins directory would mean bzr would treat my backup as a tasty new plugin - doh. No wonder there was no info on google about it.

I have just purged it, strangely enough the problem has gone away :-).

Thanks again.

Cheers
Dean.