‘" t ." Title: git-process ." Author: [see the “AUTHOR” section] ." Generator: DocBook XSL Stylesheets v1.78.1 <docbook.sf.net/> ." Date: 04/20/2016 ." Manual: \ & ." Source: \ & ." Language: English ." .TH “GIT-PROCESS” “1” “04/20/2016” “\ &” “\ &” ." —————————————————————– ." * Define some portability stuff ." —————————————————————– ." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ." bugs.debian.org/507673 ." lists.gnu.org/archive/html/groff/2009-02/msg00013.html ." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie n(.g .ds Aq (aq .el .ds Aq ’ ." —————————————————————– ." * set default formatting ." —————————————————————– ." disable hyphenation .nh ." disable justification (adjust text to left margin only) .ad l ." —————————————————————– ." * MAIN CONTENT STARTS HERE * ." —————————————————————– .SH “NAME” git-process - A suite of tools to make it easy to use an easy and robust git process&. .SH “DESCRIPTION” .sp fIgit-process(1)fR consists of a small suite of tools that make it easy to follow a simple, consistent process that scales from simple one-person projects to very large (dozens of developers) collaboration&. It does this by taking advantage of “classic” methodologies like “Git Flow” and GitHub pull requests to have “just enough” process&. See fBWORKFLOW EXAMPLESfR to see this in practice&. .SH “COMMON OPTIONS” .PP fB--infofR .RS 4 Informational messages; show the major things this is doing (fBdefault: truefR) .RE .PP fB-q, --quietfR .RS 4 Quiet messages; only show errors .RE .PP fB-v, --verbosefR .RS 4 Verbose messages; show lots of details on what this is doing .RE .PP fB--versionfR .RS 4 Print version and exit .RE .SH “CONFIGURATION” .PP fBgitProcess&.remoteNamefR .RS 4 Allows you to explicitly set the remote server name to use&. Defaults to the first server name reported by fIgit-remote(1)fR&. .RE .PP fBgitProcess&.integrationBranchfR .RS 4 Allows you to explicitly set the integration branch to use&. Defaults to “master”&. .RE .PP fBgitProcess&.defaultRebaseSyncfR .RS 4 Should fIgit-sync(1)fR use fB--rebasefR by default instead of fB--mergefR? Defaults to fBtruefR&. .RE .PP fBgitProcess&.github&.authtokenfR .RS 4 Not meant to be set manually, this is the OAuth token used to communicate with the GitHub server&. If it is not set, the user will be prompted for their credentials&. .RE .PP fBgithub&.userfR .RS 4 If OAuth needs to prompt for credentials, if this value is set then it is used as the username&. Otherwise it is unused&. .RE .SH “WORKFLOW EXAMPLES” .SS “WORKING ALONE ON A LOCAL-ONLY PROJECT” .sp Jim is working on “my_project” and needs to start work on a new feature&. .sp .if n {\ .RS 4 .} .nf [a_branch]$ git new-fb save_the_planet

Creating save_tp off of master

[save_the_planet]$ .fi .if n {\ .RE .} .sp He does lots of work&. Checkin, checkin, checkin&. .sp A sudden new brilliant idea happens&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git new-fb shave_the_bunnies

Creating shave_the_bunnies off of master

[shave_the_bunnies]$ .fi .if n {\ .RE .} .sp After creating a Sheering class and tests, he commits his changes&. .sp .if n {\ .RS 4 .} .nf [shave_the_bunnies]$ git commit [shave_the_bunnies]$ git to-master

Rebasing shave_the_bunnies against master
Removing branch \*(Aqshave_the_bunnies\*(Aq

[parking]$ .fi .if n {\ .RE .} .sp Time to get back to work on “save_the_planet”&. .sp .if n {\ .RS 4 .} .nf [parking]$ git checkout save_the_planet [save_the_planet]$ git sync

Rebasing save_the_planet against master

[save_the_planet]$ .fi .if n {\ .RE .} .sp Do more work&. Commit&. Commit&. Commit&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git sync

Rebasing save_the_planet against master

[save_the_planet]$ .fi .if n {\ .RE .} .sp Liking to have a clean history, he squashes and edits the commits to hide the evidence of false starts and stupid ideas so that anyone who sees the code in the future will think he was simply a genius&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git rebase -i

Rebasing save_the_planet against master

[save_the_planet]$ git to-master

Rebasing save_the_planet against master
Removing branch \*(Aqsave_the_planet\*(Aq

[parking]$ .fi .if n {\ .RE .} .sp Time to release to a grateful world&. .SS “WORKING WITH A TEAM” .sp John, Alice, Bill and Sally are working on “big_monies&.” Alice and John are pairing and need to start work on a new feature&. .sp .if n {\ .RS 4 .} .nf john-$ git new-fb steal_underpants

Fetching the latest changes from the server
Creating steal_underpants off of origin/master

john-$ .fi .if n {\ .RE .} .sp They do lots of work&. Checkin, checkin, checkin&. It has a lot of steps&… .sp Meanwhile Bill has been working on his great idea: .sp .if n {\ .RS 4 .} .nf bill-$ git new-fb awesomo4000

Fetching the latest changes from the server
Creating awesomo4000 off of origin/master

bill-$ .fi .if n {\ .RE .} .sp He creates his “Laaaaame” class and checks it in, with a pull request asking Sally to do a code review&. .sp .if n {\ .RS 4 .} .nf bill-$ git commit bill-$ git pull-req “A&.W&.E&.S&.O&.M-0 4000 prototype” e

                  \-d "@sally, can you make sure Butters won\*(Aqt recognize it?"
Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&.
Creating a pull request asking for \*(Aqawesomo4000\*(Aq to be merged into \*(Aqmaster\*(Aq on big_monies\&.
Created pull request at https://github\&.com/big_monies/pull/3454

bill-$ .fi .if n {\ .RE .} .sp Sally sees the email&. After looking at it in the web interface, she wants to test it&. .sp .if n {\ .RS 4 .} .nf sally-$ git pull-req 3454

Getting #pr_number
Fetching the latest changes from the server
  new branch: awesomo4000
Setting upstream/tracking for branch \*(Aqawesomo4000\*(Aq to \*(Aqorigin/master\*(Aq\&.

sally-$ git sync

Fetching the latest changes from the server
Rebasing awesomo4000 against origin/master
Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&.

sally-$ .fi .if n {\ .RE .} .sp After verifying that the tests still work and “it(cqs all good” she promotes the code to integration&. .sp .if n {\ .RS 4 .} .nf sally-$ git to-master

Fetching the latest changes from the server
Rebasing awesomo4000 against origin/master
Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&.
Removing branch remote \*(Aqawesomo4000\*(Aq
Removing branch local \*(Aqawesomo4000\*(Aq
Closing a pull request #3454 on origin\&.

sally-[parking]$ .fi .if n {\ .RE .} .sp Over lunch Alice gets a brainstorm (“a duck and rubber hose!”) and rushes off to her computer: .sp .if n {\ .RS 4 .} .nf alice-$ git sync steal_underpants

Fetching the latest changes from the server
Creating steal_underpants off of origin/steal_underpants
Setting upstream/tracking for branch \*(Aqsteal_underpants\*(Aq to \*(Aqorigin/master\*(Aq\&.

alice-$ .fi .if n {\ .RE .} .sp She makes her changes, syncs back up with the server, and heads over to pair with John again&. .sp .if n {\ .RS 4 .} .nf alice-$ git commit alice-$ git sync

Fetching the latest changes from the server
Rebasing steal_underpants against origin/master
Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&.

alice-$ .fi .if n {\ .RE .} .sp John, meanwhile, had made some changes of his own&. .sp .if n {\ .RS 4 .} .nf john-$ git commit john-$ git sync

Fetching the latest changes from the server
Remote branch has changed
Rebasing steal_underpants against origin/steal_underpants
Rebasing steal_underpants against origin/master
Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&.

john-$ .fi .if n {\ .RE .} .sp At this point, his local branch has Alice(cqs change as well as Bill and Sally(cqs A&.W&.E&.S&.O&.M-O 4000 enhancements&. .sp After confirming with Alice and Bill that everything looks good, he pushes his changes up for integration&. .sp .if n {\ .RS 4 .} .nf john-$ git to-master

Fetching the latest changes from the server
Rebasing steal_underpants against origin/master
Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&.
Removing remote branch \*(Aqsteal_underpants\*(Aq
Removing local branch \*(Aqsteal_underpants\*(Aq

[parking]$ .fi .if n {\ .RE .} .sp Profit!! .SH “CONTROL FILES” .PP fBgitprocess-sync-fR*fB--fR* .RS 4 To help make the process simpler and more reliable, fIgit-sync(1)fR will put a file in the “fI&.gitfR” directory that contains the SHA-1 of the last successful sync to the server&. fIgit-to-master(1)fR will remove the file as part of its normal “housekeeping&.” .RE .SH “SEE ALSO” .sp fBgit-syncfR(1), fBgit-to-masterfR(1), fBgit-new-fbfR(1), fBgit-pull-reqfR(1) .SH “BUGS” .sp Known bug list: github&.com/jdigger/git-process/issues?state=open .SH “AUTHOR” .sp git-process has been written primarily by Jim Moore&. .SH “RESOURCES” .sp Main web site: github&.com/jdigger/git-process