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:
Cody Boone Ferguson committed 2024-03-01 05:59:21 -08:00
1 parent afb9e54a4c
commit d40fe40c39
1 file changed
+245 -1
+245 -1
View File
@@ -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.