Hi,

After talking with a few people about it over the last few weeks, and
seeing some difficulties that people face with merge-upstream, I'd like
to start a discussion of what could be done to improve it.

I have some ideas, but please present any others you have.

1) The obvious one, watch file intergration.

We don't have to make you give the URL of the tarball if you have a
watch file. This has been the intent from the first day I wrote
merge-upstream, and the reason why "--version" is a mandatory option
right now, I just haven't got around to it.

I'd be more than happy to help someone implement this. The uscan part
isn't too hard, you just have to run it with a certain combination of
options and parse the resulting xml-like. The only difficulty is
threading it in to the maze of code to deal with all the optional
arguments. I'd love to clean that up and get this feature in.

2) Another obvious one, fixing bugs.

I've just found another "incosistent delta" bug, and there are probably
more. Getting them fixed would make it more reliable.

There may be other classes of bug to fix too.

3) Improved conflicts.

I'm not sure this is really merge-upstream specific, but often people
have difficulty understanding why a conflict happened, especially with
this command it seems.

I know there has been some work on improving the conflict experience,
and I'm not sure if that has had an impact here yet.

4) Remembering the upstream branch.

merge-upstream takes an optional upstream branch. Currently there are
cases where one person supplies it, but the next doesn't, and that's not
ideal, as you get a discontinuity, and there can be extra conflicts in
future due to added files.

Therefore I would like if if, similar to e.g. bzr merge, if you supply a
branch once it is remembered and used again.

However, I don't want to have it merge a completely unrelated revision
of some branch which you never told it to use (but someone else did
previously.)

Therefore I was considering the following:

  bzr merge-upstream --version 1 tarball branch

remembers branch, and then

  bzr merge-upstream --version 2 tarball

will re-use branch. However, it will look for a tag "2" in the branch,
and if found that is the revision it will use. If it is not found it
will error and demand one of -r or --no-branch.

That way it shouldn't merge completely unrelated things.

There's room for future improvements there, to have an "upstream tag
scheme", and I'm not exactly sure how to handle that in a nice way, but
that's why it's a future improvement.


Thanks,

James

-- 
ubuntu-distributed-devel mailing list
ubuntu-distributed-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-distributed-devel

Reply via email to