Merge lp://qastaging/~jelmer/bzr-pqm/2.5-compat into lp://qastaging/bzr-pqm

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Vincent Ladeuil
Approved revision: 83
Merged at revision: 83
Proposed branch: lp://qastaging/~jelmer/bzr-pqm/2.5-compat
Merge into: lp://qastaging/bzr-pqm
Diff against target: 85 lines (+26/-10)
1 file modified
pqm_submit.py (+26/-10)
To merge this branch: bzr merge lp://qastaging/~jelmer/bzr-pqm/2.5-compat
Reviewer Review Type Date Requested Status
Vincent Ladeuil Needs Fixing
Review via email: mp+89367@code.qastaging.launchpad.net

Description of the change

Fix compatibility with bzr 2.5, which has a different configuration API.

This will simplify the code quite a bit once we can drop support for older bzr versions (< 2.3).

To post a comment you must log in.
Revision history for this message
Vincent Ladeuil (vila) wrote :

You beat me to it ;)

8 +

Spurious.

16 + get = _get_user_option
17 +

Cunning !

42 + if bzrlib_version < (2, 5, 0, 'dev', 5):

(2,5,0,'beta',5) < (2, 5, 0, 'dev', 5)
True

Oops !

I think we should go with just (2,5) instead, people encountering issues
with 2.5 compatibility are likely to 1) use at least 2.5b5 or trunk 2) upgrade to at least 2.5b5 anyway.

51 + sections = []
52 + if branch:
53 + bstore = branch._get_config_store()
54 + sections.append(_mod_config.NameMatcher(bstore, None).get_sections)
55 if public_location:
56 - config.add_source(_mod_config.LocationConfig(public_location))
57 - config.add_source(_mod_config.GlobalConfig())
58 + lstore = _mod_config.LocationStore()
59 + sections.append(_mod_config.LocationMatcher(lstore,
60 + public_location).get_sections)
61 + gstore = _mod_config.GlobalStore()
62 + sections.append(_mod_config.NameMatcher(gstore, 'DEFAULT').get_sections)
63 + config = _mod_config.Stack(sections)

This doesn't look correct (locations.conf should override branch,conf when
'branch' is not None and -O also needs to supported), I think we want:

=== modified file 'pqm_submit.py'
--- pqm_submit.py 2012-01-20 00:58:05 +0000
+++ pqm_submit.py 2012-01-20 08:23:21 +0000
@@ -258,17 +258,12 @@
                 config.add_source(_mod_config.LocationConfig(public_location))
             config.add_source(_mod_config.GlobalConfig())
     else:
- sections = []
         if branch:
- bstore = branch._get_config_store()
- sections.append(_mod_config.NameMatcher(bstore, None).get_sections)
- if public_location:
- lstore = _mod_config.LocationStore()
- sections.append(_mod_config.LocationMatcher(lstore,
- public_location).get_sections)
- gstore = _mod_config.GlobalStore()
- sections.append(_mod_config.NameMatcher(gstore, 'DEFAULT').get_sections)
- config = _mod_config.Stack(sections)
+ config = branch.get_config_stack()
+ elif public_location:
+ config = _mod_config.LocationStack(public_location)
+ else:
+ config = _mod_config.GlobalStack()

Which still pass the plugin tests.

I've tested these additional changes and pushed them on lp:~bzr-pqm-devel/bzr-pqm/2.5-compat/

If you agree with them, get them, if you don't tweak them and land the result.

review: Needs Fixing
Revision history for this message
Jelmer Vernooij (jelmer) wrote :

On 01/20/2012 09:42 AM, Vincent Ladeuil wrote:
> Review: Needs Fixing
>
> You beat me to it ;)
>
> 8 +
>
> Spurious.
>
> 16 + get = _get_user_option
> 17 +
>
> Cunning !
>
> 42 + if bzrlib_version< (2, 5, 0, 'dev', 5):
>
> (2,5,0,'beta',5)< (2, 5, 0, 'dev', 5)
> True
>
> Oops !
>
> I think we should go with just (2,5) instead, people encountering issues
> with 2.5 compatibility are likely to 1) use at least 2.5b5 or trunk 2) upgrade to at least 2.5b5 anyway.
Fair enough.
>
>
> 51 + sections = []
> 52 + if branch:
> 53 + bstore = branch._get_config_store()
> 54 + sections.append(_mod_config.NameMatcher(bstore, None).get_sections)
> 55 if public_location:
> 56 - config.add_source(_mod_config.LocationConfig(public_location))
> 57 - config.add_source(_mod_config.GlobalConfig())
> 58 + lstore = _mod_config.LocationStore()
> 59 + sections.append(_mod_config.LocationMatcher(lstore,
> 60 + public_location).get_sections)
> 61 + gstore = _mod_config.GlobalStore()
> 62 + sections.append(_mod_config.NameMatcher(gstore, 'DEFAULT').get_sections)
> 63 + config = _mod_config.Stack(sections)
>
> This doesn't look correct (locations.conf should override branch,conf when
> 'branch' is not None and -O also needs to supported), I think we want:
It's consistent with the behaviour in the pre-2.5 version of bzr-pqm. I
don't think we should change that.

Cheers,

Jelmer

Revision history for this message
Vincent Ladeuil (vila) wrote :

> > This doesn't look correct (locations.conf should override branch,conf when
> > 'branch' is not None and -O also needs to supported), I think we want:

> It's consistent with the behaviour in the pre-2.5 version of bzr-pqm. I
> don't think we should change that.

Yeah, your proposal is bug-compatible but do we need to file a bug first ?

It's a common misconception that branch.conf overrides locations.conf (or that locations.conf provides default values for branch.conf), I'm pretty sure whoever coded that was misled.

Revision history for this message
Vincent Ladeuil (vila) wrote :

Meh, I've re-read the original code:

   config = StackedConfig()
    if branch:
        config.add_source(branch.get_config())
    else:
        if public_location:
            config.add_source(_mod_config.LocationConfig(public_location))
        config.add_source(_mod_config.GlobalConfig())

So that's indeed what my fix does, either there is a branch and the usual location/branch/global is in effect or there is a location and it's location/global or there is only global.

Revision history for this message
Jelmer Vernooij (jelmer) wrote :

On 01/20/2012 03:17 PM, Vincent Ladeuil wrote:
> Meh, I've re-read the original code:
>
> config = StackedConfig()
> if branch:
> config.add_source(branch.get_config())
> else:
> if public_location:
> config.add_source(_mod_config.LocationConfig(public_location))
> config.add_source(_mod_config.GlobalConfig())
>
> So that's indeed what my fix does, either there is a branch and the usual location/branch/global is in effect or there is a location and it's location/global or there is only global.
Ah, I see. I'll fix my code and land.

Cheers,

Jelmer

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches

to all changes:
to status/vote changes: