This might be enough to fix it - I just compare the values against each other rather than doing 4 explicit cases. I call bool() on them first before comparing them as we want a boolean comparison here, and that should work even if you pass None or "" or whatever I guess.
diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py index 89cef642..d4e52c4d 100644 --- a/aptsources/sourceslist.py +++ b/aptsources/sourceslist.py @@ -332,10 +332,10 @@ class SourcesList(object): for source in sources: # if there is a repo with the same (type, uri, dist) just add the # components - if source.disabled and set(source.comps) == set(comps): - source.disabled = False + if bool(source.disabled) != bool(disabled) and set(source.comps) == set(comps): + source.disabled = bool(disabled) return source - elif not source.disabled: + elif bool(disabled) == bool(source.disabled): source.comps = uniq(source.comps + comps) return source # there isn't any matching source, so create a new line and parse it -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1311056 Title: apt-add-repository adds duplicate commented/disabled source lines To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/python-apt/+bug/1311056/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs