- Part four of this Git slash GitHub for Poets tutorial.
I'm going to talk about GitHub issues,
how to file an issue and then,
also how to refer to that particular issue
as you are working on particular commits.
Now, what are GitHub issues for?
Now this is one of the few things that I'm showing
you that's actually not necessarily a Git concept.
This is purely something that exists as a layer
on the GitHub website.
So one, at some point when you take your repository
and put it locally onto your laptop,
which I'll show you I think in the next video,
those issues won't come.
The issues just are for the purpose of collaborating
through the GitHub website itself.
But they do play a vital role and I find them
incredibly useful in managing complex
software collaborative GitHub project thingymabobs.
Okay, so any repository.
Here I have the Rainbow Poem repository,
you never know when a pull request is going to come in
while I'm making this video by the way,
I did refresh it.
Hope I see a pull request.
No, okay whatever.
There's one but that's an old one.
Ah, I'm off the track here.
Okay, so let's look here.
There is a button here,
a link here, up here, called Issues.
Issues is a place to leave a comment about a project.
You know this can be a variety of things.
It can be I found a bug, when I pressed this button
on this app the whole thing crashes
or it can be I noticed that this word was misspelled
or this...
It can also, you can Issues to add
feature requests or ask questions.
In general, an issue, GitHub issues are not really
meant for the types of things you might find on
a programing help forum.
They're more specific questions and issues and bugs
and feature topic discussions around a particular project.
That said, all projects in GitHub repositories
probably treat and use Issues in different ways.
You can use labels.
You can organize them.
So many possibilities.
What I will say to you is that in particular
if you're watching these videos and you're interested
in Processing or p5.js some of this can feel very scary
and intimidating, like I'm going to file.
I found what I think is a bug, but I'm going to file an issue.
I'm going to write something and everyone's going to
come in and yell at me and tell me I did it wrong.
And I will say to you that this is not the way the world
should work or GitHub or Git should work or,
in particular, please if you're not sure
file the issue anyway in Processing or p5.js projects.
Write at Shiffman in your description
to say that I said you should.
Don't worry, there's no way you can do it wrong.
The point of the community is to be open and welcoming
and to help everybody figure out how to do all this stuff.
Nobody really knows how to do it anyway.
The people who say that they do probably don't really.
I definitely don't.
So anyway, please I'm also just making this video
to encourage you to file GitHub issues
and participate in the open source community.
Now, let's say I go over here and click on Issues.
There aren't any issues because there aren't any,
but I'm going to write a new issue.
So I click here and write a new issue.
Issues should get a title like Today is Earth Day.
Today is Earth Day
and I think the poem should reflect that.
Now, another thing you could do which is really useful,
this a little bit of an aside, but let's say
you're trying to reference something that's visual.
You can quickly take a screenshot of something.
I just took a screenshot and I can actually just,
right down here that screenshot
should be right here on the desktop.
You can see that image file.
I can drag that screenshot right into here
and it's going to upload it to the issue.
I can go here under Preview
and I can see this is what my issue looks like now.
It has an image in it
and also, the other thing that I should point out,
is this entire issue thread you can use something
called Markdown which is a special kind
of markup for writing things.
For example, this is a link.
So this is the syntax for having a link
to something you can see and this is bold,
I think, or maybe that's italic.
That's bold.
So there's a lot of markup that you can learn
and if you want to learn about that you can...
Somewhere on here, there's a styling Markdown
with Markdown is supported and if I click
on that it's taking me to a whole page
which gives me all the stuff about Markdown.
But that's a little bit of an aside.
So you can see now, I am writing my issue
and I'm going to now click Submit Now.
I could add labels.
Like I could say it's a bug, a help wanted.
You know there's a sort of standard labels.
I can create my own labels.
I could add it to a milestone.
I could assign it to somebody saying
like this is a thing you should work on.
I'm going to assign it to myself, RainbowCoder
and then I'm going to now Submit this issue.
And you can see now the issue is submitted
and if I click back on Issues,
here is a list of all the issues.
Now, notice a very important thing here.
I have one open issue and zero closed issue.
An issue is open until it is resolved.
When it is resolved it is closed.
Only the person who submitted the issue
or the owner of the repository can close an issue.
So you should know by the way, that what I'm doing
even though I'm the owner of this repository
and I'm submitting the issue to this repository...
I never, I have a timer going to figure out how long
these videos are and I never hit start on the timer.
(laughs)
I'll hit start now.
I've probably been talking for about five minutes.
But, so as I was saying a second ago, that I am the owner
of this repository and I'm submitting issues
but you as somebody else could come,
you could submit issues to any repository.
Now, let's say I want to resolve this issue.
So pretending it wasn't me that submitted it
or it doesn't matter even if it was me that submitted it,
I now want to make a change in my poem
to acknowledge this particular issue
and I want to refer back to that issue.
So let's do that.
I'm going to go to...
I'm actually going to just open a new tab
so I can come back to that tab.
And I'm going to go here, I'm going to go back to the poem
and I'm going to click Edit.
And I'm going to zoom in here
and I'm going to write at the top Today is Earth Day.
That probably has capitals, Earth Day,
it's like a holiday, special thing.
So I'm going to write today is Earth Day
and I'm going to say adding Earth Day as per...
Now, how do I refer to a particular issue?
All issues have an ID number and I'm going to go back
to this tab and see what is this issue's ID number.
It's actually number 10, which is surprising to me.
I would have thought it would have started with number one,
but that's fine and we could be sure about that
by if I click on that link you can see up here
in the URL it's issues slash 10 that's important, too.
So I can actually just say in my change as per number 10.
So I am now making a commit relevant
to that particular issue.
I'm going to now click Commit
and if I go back to this Issue page
and hit Refresh,
(laughs)
you can see here the camera's about to go off.
It took a second for it to appear.
You can see that this page now automatically
has a little entry that said that RainbowCoder
added a commit that referenced this issue just now.
This is very useful because if some day later
I want to revisit this discussion about this particular issue,
I could now click directly on this
and I could see, oh, this was the change
and I can look directly at that particular change
associated with that issue.
Now, if I felt that that was done,
I could click this Close issue
and the issue would be closed.
It would go into the Closed category;
however, I could do something else.
There are certain keywords that will
automatically close an issue with a particular commit.
So, for example, I go back to the poem
and I hit Edit again.
Today is Earth Day, I love Earth Day
as the second line of the poem.
I'm adding I love Earth Day.
I could say this fixes number 10,
adding that I love Earth Day.
So now if I use the word fixes inside my particular
commit message, it's going to recognize that...
Whoa, I don't want to close this off the broadcast.
It's going to recognize that as a commit that fixes...
Oh, I messed up the camera a little bit.
It's fine, everything's okay. (laughs)
It's going to recognize that, sorry.
It's going to recognize that as a commit,
that resolves that issue and closes it automatically.
So let's see if that happens.
I'm going to say Commit
and now, if I go back to this particular issue
and hit Refresh, look it's already closed.
So you can see RainbowCoder closed this in 45355f5.
What's that?
Remember, oops, every single...
(laughs)
Here I am.
Every single commit on the tree
of your Git repository changes thingamabob.
This light is casting a terrible shadow.
It's not supposed to do that.
Every single commit has a particular unique
identifier known as a hash code with it
and that's what you're seeing here.
So incidentally, you can also reference...
You can also reference commits in an issue, so sorry.
So, I'm going to go back.
I know this is a little bit of a frantic video.
I'm going to try to think more about rainbows
and the earth a be a little more calm.
But, I'm going to go to my history here
and I'm going to see...
First of all we can see, look at all these people
contributing to this repository.
Please file your pull requests.
And I'm going to go and I'm going to look this particular
issue of this particular commit.
I'm going to click on it and I'm going to,
what I'm going to do is I'm going to grab in the URL
this full hash code and I'm going to do Command C.
So I now have copied that and I am going to create
an issue that says, I'm not so sure about this change.
I propose that we consider doing something slightly
different, though I do love the thinking.
I don't know, right?
And then if I paste that value in here,
see how I paste that hash code into the text
of this particular issue and then I hit Submit.
You can see how that resolves itself automatically
to a link that goes directly to that particular change,
Today is Earth Day.
So there's lots of things you can do on GitHub
by referencing issue numbers
and referencing commit hash codes to in your commit messages
or in your issue descriptions.
So, here's what I would like you to do.
I would like you to do a couple of things.
If you're watching this video, one,
file an issue on my Rainbow Poem repository.
Say something about what you think the poem should have.
Then, I would suggest that you make a pull request
that references that issue that resolves it.
See if you can do that.
I'm going to accept all of your issues
and pull requests, then close them all
and it'll be exciting to see how that works for you.
And once you've done that, you're well on your way
to contributing to other open source GitHub repositories.
Okay, great.
So this wraps up this part four.
I think it was part four about Git and GitHub.
Thanks very much for watching.