Add FAQ entry about opening pull requests
This used commit afb9e54a4c as an example
(an example commit and pull request was suggested to me by Landon).
Note that I did NOT update the html file as I am not clear how to do
this (for the moment).
This commit is contained in:
1 parent
afb9e54a4c
commit
d40fe40c39
1 file changed
+245
-1
@@ -72,6 +72,7 @@ other inconsistencies with the original entry?](#faq4_3)
|
|||||||
- [6.7 - What is a entry_id?](#faq6_7)
|
- [6.7 - What is a entry_id?](#faq6_7)
|
||||||
- [6.8 - What is the purpose of the .top, .year and .path files?](#faq6_8)
|
- [6.8 - What is the purpose of the .top, .year and .path files?](#faq6_8)
|
||||||
- [6.9 - What is the current meaning of the IOCCC terms Author, Entry, and Submission?](#faq6_9)
|
- [6.9 - What is the current meaning of the IOCCC terms Author, Entry, and Submission?](#faq6_9)
|
||||||
|
- [6.10 - How does someone make a change to a file and submit that change as a GitHub pull request?](#faq6_10)
|
||||||
|
|
||||||
|
|
||||||
# The IOCCC FAQ
|
# The IOCCC FAQ
|
||||||
@@ -2986,7 +2987,7 @@ A _submission_ is something given to the IOCCC judges
|
|||||||
for consideration when the IOCCC is open.
|
for consideration when the IOCCC is open.
|
||||||
|
|
||||||
When the IOCCC is open for submissions, those who register
|
When the IOCCC is open for submissions, those who register
|
||||||
to enter the IOCCC may use the [mkliocccentry tool](https://github.com/ioccc-src/mkiocccentry)
|
to enter the IOCCC may use the [mkiocccentry tool](https://github.com/ioccc-src/mkiocccentry)
|
||||||
to package their code into a compressed tarball that may be
|
to package their code into a compressed tarball that may be
|
||||||
uploaded to the [IOCCC submit server](https://submit.ioccc.org).
|
uploaded to the [IOCCC submit server](https://submit.ioccc.org).
|
||||||
This compressed tarball is formatted in such a way that
|
This compressed tarball is formatted in such a way that
|
||||||
@@ -3001,3 +3002,246 @@ refer to what is now an _submission_. In a number of historical cases,
|
|||||||
such as old rules and old guidelines, terms such as _entry_ may still be
|
such as old rules and old guidelines, terms such as _entry_ may still be
|
||||||
found. Moreover, out of habit, the IOCCC judges sometimes use old
|
found. Moreover, out of habit, the IOCCC judges sometimes use old
|
||||||
names such as _entry_ when they should use _submission_. Sorry (tm Canada)! :-)
|
names such as _entry_ when they should use _submission_. Sorry (tm Canada)! :-)
|
||||||
|
|
||||||
|
### <a name="faq6_10"></a>FAQ 6.10: How does someone make a change to a file and submit that change as a GitHub pull request?
|
||||||
|
|
||||||
|
First, if you do not already have a GitHub account or you have not installed an
|
||||||
|
ssh key to your account you must do so. For this we will assume you do not have
|
||||||
|
a GitHub account. For the steps following creating a GitHub account you will
|
||||||
|
have to be logged into your account.
|
||||||
|
|
||||||
|
To help you out here is a navigation menu in this FAQ entry:
|
||||||
|
|
||||||
|
- [Creating a GitHub account](#creating-a-github-account)
|
||||||
|
- [Installing an ssh key to GitHub](#installing-an-ssh-key)
|
||||||
|
- [Forking the temp-test-ioccc repo](#forking-the-temp-test-ioccc-repo)
|
||||||
|
- [Cloning the temp-test-ioccc repo](#cloning-the-temp-test-ioccc-repo)
|
||||||
|
- [Making changes, fixes etc.](#making-changes-fixes-etc)
|
||||||
|
- [Committing your changes](#committing-your-changes)
|
||||||
|
- [Opening a pull request](#opening-a-pull-request)
|
||||||
|
- [What to do after a merge](#what-to-do-after-a-merge)
|
||||||
|
|
||||||
|
|
||||||
|
#### Creating a GitHub account
|
||||||
|
|
||||||
|
Go to [GitHub](https://github.com/) and click on 'Sign up'. Follow the
|
||||||
|
instructions. Once you've completed this task make sure you log in to GitHub.
|
||||||
|
|
||||||
|
#### Installing an ssh key to GitHub
|
||||||
|
|
||||||
|
Assuming you do not have an ssh key you should go to the command prompt and
|
||||||
|
type (if you already have one and are okay using it for GitHub you can use that
|
||||||
|
one):
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh-keygen -t rsa -b 4096 -C "luser@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
where `luser@example.com` is the email you want associated with your key.
|
||||||
|
Follow the instructions. It will tell you the key files.
|
||||||
|
|
||||||
|
Once you have an ssh key you need to go to your [account
|
||||||
|
settings](https://github.com/settings/profile). Once there, in the menu
|
||||||
|
on the left you should see the item _SSH and GPG keys_. Click that and then
|
||||||
|
click (on the right side) the button that says _New SSH key_. You will see that
|
||||||
|
you have to specify a title, the key type and the PUBLIC key. Put whatever title
|
||||||
|
you want and keep the key type as _Authentication Key_. Now you need to put the
|
||||||
|
PUBLIC key in.
|
||||||
|
|
||||||
|
If you used an rsa key the default file will likely be found in:
|
||||||
|
`~/.ssh/id_rsa.pub`. If you used a different algorithm the file name will be
|
||||||
|
different. For instance if you used `ed25519` the default PUBLIC key file would
|
||||||
|
be `~/.ssh/id_ed25519`. If, like some people do, you have a separate key for
|
||||||
|
GitHub, it could be anything you wish, as long as it's in `~/.ssh`. For instance
|
||||||
|
it might be `~/.ssh/github.pub`.
|
||||||
|
|
||||||
|
Whatever the key file is, copy the contents and paste it into the GitHub field
|
||||||
|
labelled _Key_. Once you have done so click on _Add SSH key_.
|
||||||
|
|
||||||
|
#### Forking the temp-test-ioccc repo
|
||||||
|
|
||||||
|
Open in your browser the link:
|
||||||
|
<https://github.com/ioccc-src/temp-test-ioccc/fork>. You now should follow the
|
||||||
|
instructions in forking the repo.
|
||||||
|
|
||||||
|
|
||||||
|
#### Cloning the temp-test-ioccc repo
|
||||||
|
|
||||||
|
Once you have forked the repo you are ready to clone it to your system. For
|
||||||
|
instance Cody Boone Ferguson has the GitHub handle _xexyl_ so he would type in:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/xexyl/temp-test-ioccc [target_dir]
|
||||||
|
```
|
||||||
|
|
||||||
|
Once that is completed you will need to change to that directory. The default
|
||||||
|
directory would be the name of the repo but if you specified a target directory
|
||||||
|
it will be that. For instance using the above example you might do:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd temp-test-ioccc
|
||||||
|
```
|
||||||
|
|
||||||
|
You're ready to make your changes now!
|
||||||
|
|
||||||
|
|
||||||
|
#### Making changes, fixes etc.
|
||||||
|
|
||||||
|
Here you must use your wits, knowledge, creativity and whatever else you have.
|
||||||
|
Let's say that Cody wants to update his file
|
||||||
|
[/2020/ferguson1/play.sh](/2020/ferguson1/play.sh) script. He would open it in
|
||||||
|
his editor of choice (in his case vim) and make the changes. He would then make
|
||||||
|
sure (as there is a last updated date) to update the last updated date. For
|
||||||
|
instance he might add the following:
|
||||||
|
|
||||||
|
> BTW: did you know that some people believe in snake human hybrids? It's true! See
|
||||||
|
> http://www.macroevolution.net/snake-human-hybrids.html and have a laugh, shock
|
||||||
|
> or an exercise in sibilance!
|
||||||
|
|
||||||
|
Then, assuming that the date is 1 March 2024, he would update the line that
|
||||||
|
starts with `# Last updated: ` to refer to `01 March 2024` rather than what it
|
||||||
|
is now (at the time of writing this), `15 April 2023`.
|
||||||
|
|
||||||
|
But what if he wanted to add a file? He'd create the file and then type:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git add foo
|
||||||
|
```
|
||||||
|
|
||||||
|
where _foo_ is the file to add.
|
||||||
|
|
||||||
|
When he's ready to make a commit he would need to create a new branch for the
|
||||||
|
pull request.
|
||||||
|
|
||||||
|
#### Committing your changes
|
||||||
|
|
||||||
|
First, as an aside, if this is your first pull request (which we assume is if you're
|
||||||
|
reading this :-) ) you need to make sure that you can push changes to GitHub
|
||||||
|
with your ssh key. To do this you need to do:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh -T git@github.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Cody would see:
|
||||||
|
|
||||||
|
> Hi xexyl! You've successfully authenticated, but GitHub does not provide shell access.
|
||||||
|
|
||||||
|
Now, assuming that the forked repo is
|
||||||
|
<https://github.com/xexyl/temp-test-ioccc>, you'd type:
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git remote set-url origin git@github.com:xexyl/temp-test-ioccc.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you'd be ready to make your commits.
|
||||||
|
|
||||||
|
Before doing anything else, however, a new branch needs to be created.
|
||||||
|
Continuing the example above for
|
||||||
|
[2020/ferguson1/play.sh](/2020/ferguson1/play.sh), it might be that:
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout -B human-snakes
|
||||||
|
```
|
||||||
|
|
||||||
|
This would change the branch to the newly created branch `human-snakes` branch.
|
||||||
|
Now Cody could commit the changes:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git commit play.sh # if specifying specific files
|
||||||
|
git commit -a # if committing everything
|
||||||
|
```
|
||||||
|
|
||||||
|
He could also have done:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git add play.sh
|
||||||
|
git commit
|
||||||
|
```
|
||||||
|
|
||||||
|
In any case this would open an editor (in his case vim) to write a commit log.
|
||||||
|
It is recommended that the first line is <=51 chars and the next line is blank.
|
||||||
|
Then if necessary add a description for the log. For instance the above might
|
||||||
|
warrant the log:
|
||||||
|
|
||||||
|
```
|
||||||
|
Add fun link to 2020/ferguson1/play.sh
|
||||||
|
|
||||||
|
Did you know some people believe in snake human hybrids? I added a link to the
|
||||||
|
script that discusses this and gives supposed examples.
|
||||||
|
```
|
||||||
|
|
||||||
|
Now a pull request has to be opened.
|
||||||
|
|
||||||
|
|
||||||
|
#### Opening a pull request
|
||||||
|
|
||||||
|
To do this depends on the branch name. Assuming the branch from above,
|
||||||
|
`human-snakes`, you would type:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git push --set-upstream origin human-snakes
|
||||||
|
```
|
||||||
|
|
||||||
|
This might show:
|
||||||
|
|
||||||
|
```
|
||||||
|
Enumerating objects: 9, done.
|
||||||
|
Counting objects: 100% (9/9), done.
|
||||||
|
Delta compression using up to 10 threads
|
||||||
|
Compressing objects: 100% (5/5), done.
|
||||||
|
Writing objects: 100% (5/5), 739 bytes | 147.00 KiB/s, done.
|
||||||
|
Total 5 (delta 4), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
|
||||||
|
remote:
|
||||||
|
remote: Create a pull request for 'human-snakes' on GitHub by visiting:
|
||||||
|
remote: https://github.com/xexyl/temp-test-ioccc/pull/new/human-snakes
|
||||||
|
remote:
|
||||||
|
To github.com:xexyl/temp-test-ioccc.git
|
||||||
|
* [new branch] human-snakes -> human-snakes
|
||||||
|
branch 'human-snakes' set up to track 'origin/human-snakes'.
|
||||||
|
```
|
||||||
|
|
||||||
|
The link referred to above would then be opened to open a pull request. Just
|
||||||
|
follow the instructions at this point. If however it does not show a link it is
|
||||||
|
likely because the branch already exists in your GitHub account (for the repo).
|
||||||
|
In this case you can open the link:
|
||||||
|
<https://github.com/ioccc-src/temp-test-ioccc/pulls> which might show something
|
||||||
|
like:
|
||||||
|
|
||||||
|
```
|
||||||
|
xexyl:human-snakes had recent pushes 1 minute ago
|
||||||
|
```
|
||||||
|
|
||||||
|
and to the right of it you would see a button that says _Compare & pull request_
|
||||||
|
which you could click on. Do that and follow the instructions.
|
||||||
|
|
||||||
|
An important note is if you have more than one pull request opened it'll only
|
||||||
|
show the branch name as the summary. You should in that case copy paste the log
|
||||||
|
you put in into the website. For instance the line (on the website) _Add a
|
||||||
|
title_ could have:
|
||||||
|
|
||||||
|
> Add fun link to 2020/ferguson1/play.sh
|
||||||
|
|
||||||
|
and then the text field that is labelled _Add a description_ would have:
|
||||||
|
|
||||||
|
> Did you know some people believe in snake human hybrids? I added a link to the
|
||||||
|
> script that discusses this and gives supposed examples.
|
||||||
|
|
||||||
|
Once you've done this you should click on _Create pull request_.
|
||||||
|
|
||||||
|
|
||||||
|
#### What to do after a merge
|
||||||
|
|
||||||
|
When the judges have merged the pull request you now need to make sure your fork
|
||||||
|
has the merge. To do this from the command line, assuming the fork in the above
|
||||||
|
example, you would type:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout master && git pull https://github.com/ioccc-src/temp-test-ioccc.git master && git push origin master
|
||||||
|
```
|
||||||
|
|
||||||
|
This will merge your pull request to your fork.
|
||||||
Reference in new issue
Block a user