This mailing list vs. wxPython-dev mailing list

I've noticed recently more and more wxPython development related
messages being sent to this list, such as patches and inquiries about
them and so forth.

On the wxPython web site, there is this distinction made here
(http://wxpython.org/maillist.php):

*wxPython-users*
The main list for discussing wxPython, getting questions answered,
sharing experiences, etc. All questions that are Python specific
should be asked here.

(not sure if that last bit should be "Python" or "wxPython", but we
get the point)

vs...

*wxPython-dev*
This list is for coordinating between myself and people who contribute
code to wxPython and also people who are willing to test prereleases
of wxPython.

Maybe I'm misunderstanding something, but seems to me that these
development questions or patches ought to be directed to the dev list.
Whereas this list is about users and their questions or comments
about the toolkit. I feel like there might be fewer newbies willing
to try out using wxPython if every fourth message is about some arcane
patch (or typo in the docs) when they explore the list--it gives a
different sense to it than if people are asking about how to display
GUI elements nicely, no?.

Also, isn't there a more efficient way to provide patches than to post
them to an email list aimed at the core developer?

Thanks.

C M wrote:

Maybe I'm misunderstanding something, but seems to me that these
development questions or patches ought to be directed to the dev list.

I agree. Although it has been mentioned many times and some people just can't seem to figure it out so I've given up and will respond to dev things here too.

Also, isn't there a more efficient way to provide patches than to post
them to an email list aimed at the core developer?

There is Trac, but to be honest I don't have a good record on keeping up with issues and patches posted there.

Probably the most efficient way would be to use pull requests on github as it is very automated and no patch files will have to be created, attached, uploaded, downloaded or applied manually at all. You just checkout the code locally, make your changes and test, commit to the local repository, push to github, and then send it to my account via github's pull request feature. It sounds complicated, but it really is not as difficult as it sounds. My github repositories are at RobinD42 (Robin Dunn) · GitHub, and information about how to make your own clones and to make pull requests is at:

https://help.github.com/articles/fork-a-repo
https://help.github.com/articles/using-pull-requests

···

--
Robin Dunn
Software Craftsman

Hi Robin,

...

Probably the most efficient way would be to use pull requests on github as it is very automated and no patch files will have to be created, attached, uploaded, downloaded or applied manually at all.

Gave that a try with a small doc correction for wx.mixins.inspection - too me seems a lot easier then doing the SVN patch stuff.

Werner

···

On 05/06/2013 18:55, Robin Dunn wrote:

Hi,

Probably the most efficient way would be to use pull requests on github as it is very automated and no patch files will have to be created, attached, uploaded, downloaded or applied manually at all. You just checkout the code locally, make your changes and test, commit to the local repository, push to github, and then send it to my account via github's pull request feature. It sounds complicated, but it really is not as difficult as it sounds. My github repositories are at RobinD42 (Robin Dunn) · GitHub, and information about how to make your own clones and to make pull requests is at:

Fork a repository - GitHub Docs
About pull requests - GitHub Docs

This might also be a useful link:

Werner

Need some tips on git - I know OT but as it is for Phoenix:).

By following above I resync'ed my fork and local copy with Robin's, no problem here.

Now I make three changes:
- one to conf.py, which might be of interest to Robin
- one to ignore, which he won't care, my Wing project files
- some small doc changes, which should be in the pull request

- committed them individually but when I start the pull request I see that all are included and it doesn't allow me to cherry pick.

I like to do two pull requests, one for the conf.py and one for the doc, but how?

I guess I should work with branches, but how?

Werner

···

On 08/06/2013 08:40, werner wrote:

Hi,

Probably the most efficient way would be to use pull requests on github as it is very automated and no patch files will have to be created, attached, uploaded, downloaded or applied manually at all. You just checkout the code locally, make your changes and test, commit to the local repository, push to github, and then send it to my account via github's pull request feature. It sounds complicated, but it really is not as difficult as it sounds. My github repositories are at RobinD42 (Robin Dunn) · GitHub, and information about how to make your own clones and to make pull requests is at:

Fork a repository - GitHub Docs
About pull requests - GitHub Docs

This might also be a useful link:

TrinityCore

Thanks for that link, Werner. I read all the way. Yes, you need to create a new branch before you want to commit patches. If you create two branches, say ‘doc’ and ‘conf’, then you can commit the documentation changes to your ‘doc’ branch, and the configuration changes to your ‘conf’ branch. Then you can start making pull requests for each branch separately.

Creating a new branch is easy. For TortoiseGit, it is very well explained in the link you posted.

In GitHub, you login to your GitHub account and navigate to the page of your fork and notice there’s a “branch” pull-down menu which says “branch: master” in your case. Click on the down-pointing triangle and enter a name for your branch. You can type the name of a branch to switch to. Type in ‘doc’ (without the quotes) to switch to the branch ‘doc’. But since you don’t have any branch with the name ‘doc’, it will be created on the spot. Try it, it’s a lot of fun creating branches. :wink:

werner wrote:

Need some tips on git - I know OT but as it is for Phoenix:).

By following above I resync'ed my fork and local copy with Robin's, no
problem here.

Now I make three changes:
- one to conf.py, which might be of interest to Robin
- one to ignore, which he won't care, my Wing project files
- some small doc changes, which should be in the pull request

- committed them individually but when I start the pull request I see
that all are included and it doesn't allow me to cherry pick.

I like to do two pull requests, one for the conf.py and one for the doc,
but how?

I guess I should work with branches, but how?

Yep, each distinct change or group of changes should be done on a separate branch. They are not too hard to manage, from the command line you can do something like this:

  git checkout -b my-new-branch master

That does a series of things for you. 1. changes to the master branch if you are not already there, 2. create a new branch from master, 3. changes to that new branch. (If you are already on master you can leave off the last parameter.)

GUI tools for git will have the same ability, although you may have to ensure that you switch to master (or are already there) first, and then make the branch. To switch back to master, or to some other branch, you run a command like this:

  git checkout master

Once you have switched to a branch then any changes you commit will be saved on that branch. When you are ready to submit the changes you can push your branch to your github account (probably the 'origin' remote unless you've set things up differently) and then when you look at your github repository you will be able to choose that branch for a PR. If you need to make additional changes for that PR then you can make the updates in your local workspace, commit them, and then when you push that branch to origin again the PR will automatically be updated with the new commits.

One oddity that you'll need to deal with in our case is that since the changes will be going to a subversion repository before coming back to the git repository, then it will look like your changes were duplicated on master instead of being merged into master like is normally done with git. At that point you can just delete your branch, both in your local repository and in github. That will help unconfuse your local repository and nothing will be lost since the changes are now in master where you wanted them to be anyway.

One more tip: If you are working on more than one branch at a time, and want to test them all together before submitting them as a PR, then I suggest making an additional branch (like 'devel' or 'testing' or whatever) from master and merging the other branches to that branch. If you find that you need to make an additional change to one of the branches then you can either make the commit on the testing branch and cherry-pick it back over to the original branch where it needs to go, or make the commit on the original branch and then merge it back over to testing to run the tests again. If this sounds too confusing, don't worry, it will probably make sense when you need it and actually do it once or twice.

···

--
Robin Dunn
Software Craftsman

...

Yep, each distinct change or group of changes should be done on a separate branch. They are not too hard to manage, from the command line you can do something like this:

    git checkout -b my-new-branch master

That does a series of things for you. 1. changes to the master branch if you are not already there, 2. create a new branch from master, 3. changes to that new branch. (If you are already on master you can leave off the last parameter.)

GUI tools for git will have the same ability, although you may have to ensure that you switch to master (or are already there) first, and then make the branch. To switch back to master, or to some other branch, you run a command like this:

    git checkout master

Once you have switched to a branch then any changes you commit will be saved on that branch. When you are ready to submit the changes you can push your branch to your github account (probably the 'origin' remote unless you've set things up differently) and then when you look at your github repository you will be able to choose that branch for a PR. If you need to make additional changes for that PR then you can make the updates in your local workspace, commit them, and then when you push that branch to origin again the PR will automatically be updated with the new commits.

One oddity that you'll need to deal with in our case is that since the changes will be going to a subversion repository before coming back to the git repository, then it will look like your changes were duplicated on master instead of being merged into master like is normally done with git. At that point you can just delete your branch, both in your local repository and in github. That will help unconfuse your local repository and nothing will be lost since the changes are now in master where you wanted them to be anyway.

One more tip: If you are working on more than one branch at a time, and want to test them all together before submitting them as a PR, then I suggest making an additional branch (like 'devel' or 'testing' or whatever) from master and merging the other branches to that branch. If you find that you need to make an additional change to one of the branches then you can either make the commit on the testing branch and cherry-pick it back over to the original branch where it needs to go, or make the commit on the original branch and then merge it back over to testing to run the tests again. If this sounds too confusing, don't worry, it will probably make sense when you need it and actually do it once or twice.

I have tried different things along those lines yesterday and this morning. Your comments help in confirming that I am going down the correct path.

I ended up doing a branch based on a commit before I did any changes and then went and "cherry-picked" the one I wanted from my "master" branch.

Slowly, very slowly I am getting more comfortable with git.

Thanks
Werner

···

On 10/06/2013 19:47, Robin Dunn wrote: