On 01/25/2018 07:09 AM, Duncan Murdoch wrote:
On 25/01/2018 6:49 AM, Dirk Eddelbuettel wrote:

On 25 January 2018 at 06:20, Duncan Murdoch wrote:
| On 25/01/2018 2:57 AM, Iñaki Úcar wrote:
| > For what it's worth, this is my workflow:
| >
| > 1. Get a fork.
| > 2. From the master branch, create a new branch called fix-[something].
| > 3. Put together the stuff there, commit, push and open a PR.
| > 4. Checkout master and repeat from 2 to submit another patch.
| >
| > Sometimes, I forget the step of creating the new branch and I put my
| > fix on top of the master branch, which complicates things a bit. But
| > you can always rename your fork's master and pull it again from
| > upstream.
|
| I saw no way to follow your renaming suggestion.  Can you tell me the
| steps it would take?  Remember, there's already a PR from the master
| branch on my fork.  (This is for future reference; I already followed
| Gabor's more complicated instructions and have solved the immediate
| problem.)

1)  Via GUI: fork or clone at github so that you have URL to use in 2)

Github would not allow me to fork, because I already had a fork of the same repository.  I suppose I could have set up a new user and done it.

I don't know if cloning the original would have made a difference. I don't have permission to commit to the original, and the manipulateWidget maintainers wouldn't be able to see my private clone, so I don't see how I could create a PR that they could use.

Once again, let me repeat:  this should be an easy thing to do.  So far I'm pretty convinced that it's actually impossible to do it on the Github website without hacks like creating a new user.  It's not trivial but not that difficult for a git expert using command line git.

If R Core chose to switch the R sources to use git and used Github to host a copy, problems like mine would come up fairly regularly.  I don't think R Core would gain enough from the switch to compensate for the burden of dealing with these problems.

A different starting point gives R-core members write access to the R-core git, which is analogous to the current svn setup. A restricted set of commands are needed, mimicking svn

  git clone ...   # svn co
  git pull        # svn up
  [...; git commit ...]
  git push ...    # svn ci

Probably this would mature quickly into a better practice where new features / bug fixes are developed on a local branch.

A subset of R-core might participate in managing pull requests on a 'read only' Github mirror. Incorporating mature patches would involve git, rather than the Github GUI. In one's local repository, create a new branch and pull from the repository making the request

  git checkout -b a-pull-request master
  git pull https://github.com/a-user/their.git their-branch

Check and modify, then merge locally and push to the R-core git

  ## identify standard / best practice for merging branches
  git checkout master
  git merge ... a-pull-request
  git push ...

Creating pull requests is a problem for the developer wanting to contribute to R, not for the R-core developer. As we've seen in this thread, R-core would not need to feel responsible for helping developers create pull requests.

Martin Morgan


Maybe Gitlab or some other front end would be better.

Duncan Murdoch


2)  Run
       git clone giturl....
     to fetch local instance
3)  Run
       git checkout -b feature/new_thing_a
     (this is 2. above by Inaki)
4)  Edit, save, compile, test, revise, ... leading to 1 or more commits

5)  Run
       git push origin
     standard configuration should have remote branch follow local branch, I
     think the "long form" is
       git push --set-upstream origin feature/new_thing_a

6)  Run
       git checkout -
     or
       git checkout master
     and you are back in master. Now you can restart at my 3) above for
     branches b, c, d and create independent pull requests

I find it really to have a bash prompt that shows the branch:

     edd@rob:~$ cd git/rcpp
     edd@rob:~/git/rcpp(master)$ git checkout -b feature/new_branch_to_show
     Switched to a new branch 'feature/new_branch_to_show'
     edd@rob:~/git/rcpp(feature/new_branch_to_show)$ git checkout -
     Switched to branch 'master'
     Your branch is up-to-date with 'origin/master'.
     edd@rob:~/git/rcpp(master)$ git branch -d feature/new_branch_to_show
     Deleted branch feature/new_branch_to_show (was 5b25fe62).
     edd@rob:~/git/rcpp(master)$

There are few tutorials out there about how to do it, I once got mine from Karthik when we did a Software Carpentry workshop.  Happy to detail off-list,
it adds less than 10 lines to ~/.bashrc.

Dirk

|
| Duncan Murdoch
|
| > Iñaki
| >
| >
| >
| > 2018-01-25 0:17 GMT+01:00 Duncan Murdoch <murdoch.dun...@gmail.com>:
| >> Lately I've been doing some work with the manipulateWidget package, which
| >> lives on Github at
| >> https://github.com/rte-antares-rpackage/manipulateWidget/.  Last week I | >> found a bug, so being a good community member, I put together a patch.
| >>
| >> Since the package lives on Github, I followed instructions to put together a
| >> "pull request":
| >>
| >> - I forked the main branch to my own Github account as
| >> <https://github.com/dmurdoch/manipulateWidget>.
| >>
| >> - I checked out my fork into RStudio.
| >>
| >> - I fixed the bug, and submitted the pull request
| >> <https://github.com/rte-antares-rpackage/manipulateWidget/pull/47>.
| >>
| >> Then I felt good about myself, and continued on with my work. Today I | >> tracked down another bug, unrelated to the previous one.  I know enough | >> about git to know that I shouldn't commit this fix to my fork, because it
| >> would then become part of the previous pull request.
| >>
| >> So I created a branch within my fork, and committed the change there. But | >> Github provides no way to create a pull request that only includes the new | >> stuff!  Every attempt I made would have included everything from both bug
| >> fixes.
| >>
| >> I've read online about creating a new branch based on the master copy, and | >> "cherry picking" just the final change:  but all the instructions I've tried
| >> so far have failed.
| >>
| >> Okay, I know the solution:  I need to burn the whole thing down (to quote | >> Jenny Bryan).  I'll just create a new fork, and put the new bug fix in a
| >> branch there.
| >>
| >> I can't!  I don't know if this is a Git restriction or a Github restriction, | >> but it won't let me create a new fork without deleting the old one.  I don't | >> know if deleting the previous fork would also delete the previous PR, so I'm
| >> not going to do this.
| >>
| >> This is ridiculous!  It is such an easy concept:  I want to take the diff | >> between my most recent commit and the one before, and send that diff to the | >> owners of the master copy.  This should be a trivial (and it is in svn).
| >>
| >> Git and Github allow the most baroque arrangements, but can't do this simple
| >> task.  That's an example of really bad UI design.
| >>
| >> Duncan Murdoch
| >>
| >> ______________________________________________
| >> R-devel@r-project.org mailing list
| >> https://stat.ethz.ch/mailman/listinfo/r-devel
| >
| >
| >
|
| ______________________________________________
| R-devel@r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-devel


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


This email message may contain legally privileged and/or...{{dropped:2}}

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to