Skip to content

Commit

Permalink
Merge pull request #553 from npcode/fork-origin
Browse files Browse the repository at this point in the history
fork: Rename 'origin' to 'upstream' after forking
  • Loading branch information
hemanth authored Jul 25, 2016
2 parents 859bf38 + c972961 commit 1ec4835
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 146 deletions.
19 changes: 12 additions & 7 deletions bin/git-fork
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ abort() {

url="$1"

test -z "$url" && url=`git remote get-url origin 2> /dev/null`
test -z "$url" && url=`git remote get-url origin 2> /dev/null` && origin=true

# validate repo url
test -z "$url" && abort "github repo needs to be specified as an argument"
Expand All @@ -34,10 +34,15 @@ fi
curl -X POST -u "$user" "https://api.github.com/repos/$owner/$project/forks"
[ $? = 0 ] || abort "fork failed"

# clone forked repo into current dir
git clone "https://github.com/$user/$project" "$project"
if [ "$origin" = true ]; then
git remote rename origin upstream
git remote add origin "https://github.com/$user/$project"
else
# clone forked repo into current dir
git clone "https://github.com/$user/$project" "$project"

# add reference to origin fork so can merge in upstream changes
cd "$project"
git remote add upstream "https://github.com/$owner/$project"
git fetch upstream
# add reference to origin fork so can merge in upstream changes
cd "$project"
git remote add upstream "https://github.com/$owner/$project"
git fetch upstream
fi
31 changes: 29 additions & 2 deletions man/git-fork.1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-FORK" "1" "December 2015" "" ""
.TH "GIT\-FORK" "1" "July 2016" "" "Git Extras"
.
.SH "NAME"
\fBgit\-fork\fR \- Fork a repo on github
Expand All @@ -10,7 +10,7 @@
\fBgit\-fork\fR [<github\-repo\-url>]
.
.SH "DESCRIPTION"
Fork the given github repo\. Like clone but forks first\.
If a github repo url is given, fork the repo\. Like clone but forks first\.
.
.IP "1." 4
forks the repo on github
Expand All @@ -23,6 +23,20 @@ adds the original repo as a remote called upstream
.
.IP "" 0
.
.P
If a url is not given and the current dir is a github repo, fork the repo\.
.
.IP "1." 4
forks the current repo
.
.IP "2." 4
rename the \'origin\' remote repo to \'upstream\'
.
.IP "3." 4
adds the forked repo as a remote called origin
.
.IP "" 0
.
.SH "EXAMPLE"
Fork expect\.js:
.
Expand Down Expand Up @@ -69,6 +83,19 @@ $ cd expect\.js && git remote \-v
.
.IP "" 0
.
.P
If the current dir is a clone of expect\.js, this has the same effect:
.
.IP "" 4
.
.nf

$ git fork
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Andrew Griffiths <\fImail@andrewgriffithsonline\.com\fR>
.
Expand Down
136 changes: 0 additions & 136 deletions man/git-fork.html
Original file line number Diff line number Diff line change
@@ -1,136 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' value='text/html;charset=utf8'>
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
<title>git-fork(1) - Fork a repo on github</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>

<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#EXAMPLE">EXAMPLE</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>

<ol class='man-decor man-head man head'>
<li class='tl'>git-fork(1)</li>
<li class='tc'></li>
<li class='tr'>git-fork(1)</li>
</ol>

<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-fork</code> - <span class="man-whatis">Fork a repo on github</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-fork</code> [&lt;github-repo-url&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p> Fork the given github repo. Like clone but forks first.</p>

<ol>
<li>forks the repo on github</li>
<li>clones the repo into the current dir</li>
<li>adds the original repo as a remote called upstream</li>
</ol>


<h2 id="EXAMPLE">EXAMPLE</h2>

<p> Fork expect.js:</p>

<pre><code>$ git fork https://github.com/LearnBoost/expect.js
</code></pre>

<p> or just:</p>

<pre><code>$ git fork LearnBoost/expect.js
</code></pre>

<p> Then:</p>

<pre><code>$ ..&lt;forks into your github profile and clones repo locally to expect.js dir&gt;...

$ cd expect.js &amp;&amp; git remote -v

origin https://github.com/&lt;user>/expect.js (fetch)
origin https://github.com/&lt;user>/expect.js (push)
upstream https://github.com/LearnBoost/expect.js (fetch)
upstream https://github.com/LearnBoost/expect.js (push)
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Andrew Griffiths &lt;<a href="&#109;&#97;&#x69;&#108;&#x74;&#x6f;&#58;&#x6d;&#x61;&#x69;&#x6c;&#x40;&#x61;&#x6e;&#100;&#x72;&#101;&#x77;&#103;&#114;&#x69;&#x66;&#102;&#x69;&#116;&#104;&#x73;&#111;&#x6e;&#108;&#x69;&#x6e;&#101;&#46;&#99;&#x6f;&#109;" data-bare-link="true">&#109;&#x61;&#x69;&#x6c;&#64;&#97;&#110;&#100;&#x72;&#x65;&#119;&#103;&#x72;&#105;&#x66;&#x66;&#105;&#x74;&#x68;&#x73;&#111;&#110;&#108;&#x69;&#x6e;&#101;&#x2e;&#99;&#111;&#x6d;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>&gt;</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>


<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>December 2015</li>
<li class='tr'>git-fork(1)</li>
</ol>

</div>
</body>
</html>
12 changes: 11 additions & 1 deletion man/git-fork.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ git-fork(1) -- Fork a repo on github

## DESCRIPTION

Fork the given github repo. Like clone but forks first.
If a github repo url is given, fork the repo. Like clone but forks first.

1. forks the repo on github
2. clones the repo into the current dir
3. adds the original repo as a remote called upstream

If a url is not given and the current dir is a github repo, fork the repo.

1. forks the current repo
3. rename the 'origin' remote repo to 'upstream'
3. adds the forked repo as a remote called origin

## EXAMPLE

Fork expect.js:
Expand All @@ -34,6 +40,10 @@ git-fork(1) -- Fork a repo on github
upstream https://github.com/LearnBoost/expect.js (fetch)
upstream https://github.com/LearnBoost/expect.js (push)

If the current dir is a clone of expect.js, this has the same effect:

$ git fork


## AUTHOR

Expand Down

0 comments on commit 1ec4835

Please sign in to comment.