On May 26, 2014, at 6:08 PM, Will Stevens <williamstev...@gmail.com> wrote:

> Thank you all for the feedback, that was very helpful.
> 
> I have adjusted my steps quite a bit.  Here is an overview...
> - I have removed the 'squashed' concept.  I think it makes sense that the 
> 'default' way that people contribute is with a full history of their changes 
> and commit messages.  I hope this does not increase the amount of work for 
> the people committing the pull requests, but I have not seen that process yet.
> - I have removed the concept of 'patches' from this flow.  I originally wrote 
> this for patching because this is how I commit to code, but this flow is 
> different and we should not confuse the two when documenting how to 
> contribute to the documentation.
> - I have done a much better job of describing why we do the different steps 
> and why the different pieces are important.  You guys made good comments on 
> those aspects, so I tried to incorporate your feedback.
> - Instead of making a generic guide, I customized this guide to the specific 
> documentation repository.  I will do an initial pull request for this 
> addition to the README.rst file for the 'cloudstack-docs-admin' repository.  
> If everyone is happy with this, I will create the equivalent customized 
> additions for the other README.rst files and create pull request for them.  I 
> did this because not seeing a real URL may confuse new people when trying to 
> do these steps.  Since this will be shown on the front page of the GitHub 
> repo, it makes sense that it is setup for that repo.
> 
> I think that is pretty much it.  I will create a pull request for the 
> 'cloudstack-docs-admin' repo now with what is below.  If you have comments or 
> suggestions, please let me know and I will update the doc.
> 

Looks fine to me at a glance.

I committed to all three repos (did not see anything for cloudstack-docs 
itself).

thanks a lot for the patch

-sebastien

> Cheers,
> 
> Will
> 
> -----
> 
> Contributing to the documentation
> =================================
> 
> Initial setup of your fork
> --------------------------
> 
> In your browser, navigate to: https://github.com/apache/cloudstack-docs-admin
> 
> Fork this repository by clicking on the 'Fork' button on the top right hand 
> side.  The fork will happen and you will be taken to your own fork of the 
> repository.  On the right hand side of the page of your fork, under 'HTTPS 
> clone URL', copy the URL to your clipboard by clicking the the clipboard just 
> right of the URL.
> 
> On your computer, follow these steps to setup a local repository for working 
> on the documentation:
> 
> .. code:: bash
> 
>       $ git clone https://github.com/YOUR_ACCOUNT/cloudstack-docs-admin.git
>       $ cd cloudstack-docs-admin
>       $ git remote add upstream 
> https://github.com/apache/cloudstack-docs-admin
>       $ git checkout master
>       $ git fetch upstream
>       $ git merge upstream/master
> 
> 
> Making changes
> --------------
> 
> It is important that you create a new branch to make changes on and that you 
> do not change the `master` branch (other than to pull in changes from 
> `upstream/master`).  In this case I will assume you will be creating a branch 
> called `dev` to make your changes in.  This `dev` branch will be created on 
> your local repository and will then be pushed to your forked repository on 
> GitHub where you will create a Pull Request for the changes to be committed 
> into the official documentation.
> 
> It is good practice to create a new branch each time you want to contribute 
> to the documentation and only track the changes for that pull request in this 
> branch.
> 
> .. code:: bash
> 
>       $ git checkout -b dev
>       (make your changes)
>       $ git add .
>       $ git commit -a -m "commit message for your changes"
> 
> .. note:: 
>       The `-b` specifies that you want to create a new branch called `dev`.  
> You only specify `-b` the first time because you are creating a new branch.  
> Once the `dev` branch exists, you can later switch to it with only `git 
> checkout dev`.
> 
> 
> Merging `upstream/master` into your `dev` branch
> ------------------------------------------------
> 
> It is important that you maintain an up-to-date `master` branch in your local 
> repository.  This is done by merging in the `upstream/master` (the official 
> documentation repository) into your local repository.  You will want to do 
> this before you start working on a feature as well as right before you submit 
> your changes as a pull request.  You can also do this process periodically 
> while you work on your changes to make sure you are working off the most 
> recent version of the documentation.
> 
> This process will do the following:
> 
> #. Checkout your local `master` branch
> 
> #. Synchronize your local `master` branch with the `upstream/master` so you 
> have all the latest changes from the official docs
> 
> #. Merge the latest changes from the official docs into your `dev` branch so 
> it is up-to-date with the latest changes
> 
> .. code:: bash
> 
>       $ git checkout master
>       $ git fetch upstream
>       $ git merge upstream/master
>       $ git checkout dev
>       $ git pull . master
> 
> .. note:: Now your `dev` branch is up-to-date with all the recent changes in 
> the `upstream/master`.
> 
> 
> Making a pull request on GitHub to contribute your changes
> ----------------------------------------------------------
> 
> When you are happy with your changes and you want to contribute them, you 
> will be creating a Pull Request on GitHub to do so.  This is done by pushing 
> your changes to your forked repository (usually called 'origin') and then 
> initiating a pull request.
> 
> .. note:: Make sure you have merged `upstream/master` into your `dev` branch 
> before you do this.
> 
> .. code:: bash
> 
>       $ git push origin master
>       $ git push origin dev
> 
> Now that the `dev` branch has been pushed to your GitHub repository, you can 
> initiate the pull request.  
> 
> To initiate the pull request, do the following:
> 
> #. Navigate your browser to your forked repository: 
> https://github.com/YOUR_ACCOUNT/cloudstack-docs-admin.git
> 
> #. Click the new button called 'Compare & pull request' that showed up just 
> above the main area in your forked repository
> 
> #. Enter a good description of the work you have done and then click 'Send 
> pull request'
> 
> If you are requested to make modifications to your proposed changes, make the 
> changes locally on your `dev` branch, re-push the changes and submit the pull 
> request again.
> 
> 
> Cleaning up after a successful pull request
> -------------------------------------------
> 
> Once the `dev` branch has been committed into the `upstream/master` branch, 
> your local `dev` branch and the `origin/dev` branch are not needed anymore.  
> If you want to make additional documentation changes, restart the process 
> with a new branch.
> 
> .. note:: Make sure that your changes are in `upstream/master` before you 
> delete your `dev` and `origin/dev` branches!
> 
> You can delete these deprecated branches with the following:
> 
> .. code:: bash
> 
>       $ git checkout master
>       $ git branch -D dev
>       $ git push origin :dev
> 
> 
> 
> On Fri, May 23, 2014 at 9:01 AM, Will Stevens <williamstev...@gmail.com> 
> wrote:
> All good feedback. Thanks. 
> 
> I will rework this on Monday and add a PR for adding it to the readmes. 
> 
> Thx,
> 
> Will
> 
> 
> On Friday, May 23, 2014, Stephen Turner <stephen.tur...@citrix.com> wrote:
> > I've not seen Phabricator, but yes, what I like about github is that the 
> > code review is built into the source control. This makes the whole workflow 
> > much simpler.
> >
> > --
> > Stephen Turner
> >
> >
> > -----Original Message-----
> > From: rohityada...@gmail.com [mailto:rohityada...@gmail.com] On Behalf Of 
> > Rohit Yadav
> > Sent: 23 May 2014 11:35
> > To: dev@cloudstack.apache.org
> > Cc: Sebastien Goasguen; Pierre-Luc Dion
> > Subject: Re: [DOCS] Git Flow
> >
> > Hi,
> >
> > Good effort. Will you should also see this and update the wiki as needed:
> > https://cwiki.apache.org/confluence/display/CLOUDSTACK/Git
> >
> > I would say, squashed merges are much better when you're going through list 
> > of changes [1] instead of having a branch based workflow, 
> > reverting/fixing/bisecting it becomes much easier. I would recommend 
> > Stephen and others to checkout Phabricator's pre and post code reviewing 
> > and their CLI tool arcanist which IMO give a much better workflow.
> >
> > Right now it's too much pain for a contributor to create a patch, upload to 
> > reviewboard, get it reviewed and then for the committer to go see RB, 
> > test/review patch and merge it. This is all manual work. Pull request is 
> > one good way to solve it at the cost of complicating git trees/graphs, 
> > emailing patch directly to ML can be another (historically worked?) and 
> > using something like Phabricator (that can be hosted on ASF infra) is 
> > another way as well.
> >
> > [1] See the git network/graph: git log --graph --decorate --pretty=oneline 
> > --abbrev-commit --all
> >
> > Regards.
> >
> >
> > On Fri, May 23, 2014 at 3:20 PM, Stephen Turner
> > <stephen.tur...@citrix.com>wrote:
> >
> >> I'm not a fan of squashed merges myself, because you lose the history,
> >> which can often contain useful check-in comments.
> >>
> >> My preferred github workflow is to make a new local branch before
> >> starting any change, push that to a branch in my fork of the project
> >> on github, and then send a pull request. I don't do subsequent work on
> >> the same branch (unless the maintainer wants further changes before
> >> accepting the pull request), so I don't run into the problem where
> >> pull requests build on each other.
> >>
> >> Having said that, I'm talking about code, not documentation. There may
> >> be some reason I'm not aware of why documentation works better with a
> >> different workflow.
> >>
> >> --
> >> Stephen Turner
> >>
> >>
> >> -----Original Message-----
> >> From: williamstev...@gmail.com [mailto:williamstev...@gmail.com] On
> >> Behalf Of Will Stevens
> >> Sent: 22 May 2014 21:36
> >> To: dev@cloudstack.apache.org; Sebastien Goasguen; Pierre-Luc Dion
> >> Subject: [DOCS] Git Flow
> >>
> >> Hey All,
> >> In the the README.rst files in the documentation, it refers to this
> >> page if you want to contribute:
> >> http://cloudstack.apache.org/developers.html
> >>
> >> I am not sure those instructions are actually up-to-date or valid for
> >> contributing to the documentation.
> >>
> >> I originally tried to use this process (
> >> https://help.github.com/articles/syncing-a-fork) to keep my
> >> documentation fork up-to-date with the upstream/master, but after the
> >> first pull request the commits have to be cherry-picked because the
> >> pull requests will always take everything I have committed in my fork
> >> rather than the changes since the last pull request.  This got annoying 
> >> quickly.
> >>
> >> When contributing to the actual CloudStack code I used a squashed
> >> patch approach which worked very well.  I have written up that flow as
> >> well as a similar flow for working with Github pull requests.
> >>
> >> I would like you to review what I have written.  If you guys approve
> >> of the flow, I would like to add it to the README.rst files in the
> >> different documentation repositories to make it easier for people to
> >> contribute to the documentation.  I know I found it really hard to
> >> figure out how to contribute to the documentation initially.  We want
> >> to lower the bar a bit on this so more people feel comfortable helping 
> >> with the documentation.
> >>
> >> L
> 

Reply via email to