Difference between revisions of "Draft: Github development process"

From Dreamwidth Notes
Redirect page
Jump to: navigation, search
(fill in some more details)
(Redirected page to Version Control)
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This page is a draft page to document how development with Github works.
+
#redirect [[Version Control]]
 
+
== Starting a new branch ==
+
 
+
Before starting a new branch, wrap up any changes you are making by either stashing them or committing them to the current branch you are on.  {{Expand|text=Need to explain stashing/committing still.}}
+
 
+
To start a new branch, use the branch command.  You will want a descriptive name you can keep track of--for instance, the bug number you are working on. Examples:
+
 
+
mw@memewidth:~/dw$ git branch Bug4335/admintt
+
 
+
Then, to switch to this branch, use the checkout command:
+
 
+
mw@memewidth:~/dw$ git checkout Bug4335/admintt
+
Switched to branch 'Bug4335/admintt'
+
 
+
== Managing changes ==
+
 
+
Before doing any changes to a branch, make sure you have that branch checked out.  You can check this with:
+
 
+
git branch
+
 
+
It will list the branches and put an asterisk next to the one you currently have checked out.  If it's not, run:
+
 
+
git checkout BRANCHNAME
+
 
+
=== Viewing changes ===
+
 
+
To get an overview of which files have changed, which files are included in your next commit, and what new files exist, use:
+
 
+
git status
+
 
+
To get a line by line description of all of the changes, use:
+
 
+
git diff
+
 
+
When you want the changes you've made to a file you have to be included in your next commit, use <code>git add</code>:
+
 
+
git add FILE
+
 
+
If you make more changes to that file, you will have to add it again to have the new changes included.
+
 
+
=== Stashing and unstashing ===
+
 
+
Sometimes you may have changes you are not ready to commit yet, but need to stow away while doing tasks like merging.  <code>git stash</code> can be useful for this.
+
 
+
To save a bunch of changes:
+
 
+
git stash
+
 
+
To put the changes back:
+
 
+
git stash pop
+
 
+
=== Undoing changes ===
+
 
+
Undo changes to one file:
+
 
+
git reset ????FILLIN????
+
 
+
The nuclear option:
+
 
+
git reset --hard
+
 
+
=== Committing changes ===
+
 
+
When committing, it's a good idea to make sure your develop branch is up to date with the Dreamwidth's version, and that your current branch is merged with those changes.  See [Dev Maintenance] for instructions on that.  Then review your changes with <code>git status</code> and <code>git diff</code>, using <code>git add</code> to add the changes you want to commit.  Once you are satisfied that these changes are the ones you want to make, you can use:
+
 
+
git commit
+
 
+
This will open up the command line editor specified in your config. (You can change this with instructions in [[Git settings]].)  Write up a good description of the changes included in this commit.
+
 
+
{{Expand|text=Writing commit messages: best practices.}}
+
 
+
If you are making a commit that only needs a short explanation, you can use the -m option:
+
 
+
git commit -m "This describes the change that I just made."
+
 
+
=== Pushing your changes to your repository on Github ===
+
 
+
After committing your changes, you need to push them to your repository on Github.  You can do this with:
+
 
+
git push origin BRANCHNAME
+
 
+
== Making a pull request ==
+
 
+
Before making a pull request, make sure that the <code>develop</code> branch is up to date and you have merged the branch you are developing with it. (See [[Dev Maintenance]] for help with this.)
+
 
+
Then, once everything is all up to date, go to your version of the repository (dw-free or dw-nonfree) that you want to send upstream.  By default they should be at:
+
 
+
https://github.com/USERNAME/dw-free
+
https://github.com/USERNAME/dw-nonfree
+
 
+
These repositories are separate, so if you have made changes to both of them, you will have to submit pull requests for both of them.
+
 
+
Find the "Pull Request" button (by "Unwatch") under the top toolbar.  Click it and you will be brought to the pull request page.
+
 
+
Ideally, the initial page should say something like "Oops! dreamwidth:develop is already up-to-date with USERNAME:develop Try a different branch?"  That's good--that means that your <code>develop</code> branch is up to date with Dreamwidth's!
+
 
+
Find the "head branch" drop down and select the branch you want to submit a pull request for.
+
 
+
{{Expand|text=What do we want people to include in the pull request description?  Bugzilla URL?}}
+
 
+
When this is done, press the "Send pull request" button.
+
 
+
{{Expand|text=Describe making a pull request to another repository other than the DW one!}}
+
 
+
== Deleting branches ==
+
 
+
{{Warn|text=This command WILL destroy data, be careful when using it.  Only delete things you are sure you want deleted.}}
+
 
+
You might create a branch by mistake, or have your changes pulled into the main develop branch on Dreamwidth.  To delete the branch locally, use the command:
+
 
+
git branch -D BRANCHNAME
+
 
+
If the branch is also on your Github, you can delete it like this:
+
 
+
git push origin --delete <branchName>
+
 
+
[[Category: Development]]
+
[[Category: Git]]
+

Latest revision as of 04:30, 10 January 2013