 So now we've got the next talk on get issue from the immediate spin Ellis Thank you. Hi. Good morning Why are we here? Why would we want to run get issue? I'll give you six reasons why get issues the best things since sliced bread First of all, it's an issue management system So a bug tracker that doesn't need any sophisticated infrastructure in a system running behind it You don't need a database a server that needs to be specially configured anything like that It's very easy to install as I will show you just clone the repository and you run make Install and there you have it It's decentralized so anybody anywhere in the planet can create an issue can comment on it Can change its status at the milestone not the assign it to somebody and things get merged together in the central repository how does this happen of course it uses it as its backend and As an advantage because it's decentralized is that you can use it anywhere Even if you don't have internet connectivity, so on the plane Read somebody complaining a few days ago that the train that we're on didn't have Wi-Fi You can still get use a get issue and then you push the changes or you pull the changes that have been made It's also transparent. So the files that it uses the structure is Documented and it's available so you can use your favorite tools You can grab through issues you can find and the select them you can apply filters to it You can even use your editor if you are brave enough to change things on the fly in the repository That's absolutely allowed and then you can push the issues back in As you will appreciate it uses a git as a backend So all the goodies we have with git still work here the credentials that you have the server that you are using The commands that you know the many years you invested to learn its arcane interface everything is there to be used Also, it uses the Unix command line tools philosophy If you don't not sure why this is good There is a MOOC that I'll be starting on in March go there in order to find out But the truth is that you can use all the tools that you know on top of the files that it has As an addition as part of the Google summer of code last year We're on the roses did amazing work and integrated into git issue the ability to pull issues from github and GitLab and also put push issues back there to the issue database of these two systems So you can also use git issue in order to transfer Issues from one system to the other or ensure that your issues are in a transparent format that you can use and control on your own Let me give you a brief demo of how it works So to install it you just clone the repository And then you run install as a root user not to copy the files to the system directors Or if you don't have root access you set the prefix to your home directory in order to Install them in your home directory With git issue in it you create a new Repository let's create a new issue you can do the command line by Specifying the subject line or you can use gt issue new and net or will pop up Now you see you have two issues here can use gt issue comment to add the comment on the specific issue again with my editor Or I can't tag it with a specific tag and it tells me that it has tagged it I can't tag another tag here if I now remove a Tag, I can use the minus r option. I can assign it to somebody using again the issue Code as a to identify it Add another watcher here Here I list the specific Issue and now here is the magic. I can add a remote origin to this issue database and now I can use a Push in order to move my changes all upstream Assume now somebody else is using git issue. They can clone this repository and Then the if they list the issues the issues are back at the host that they were using They can create another issue there and create I'm specifying the subject line here and Push the changes back up to that repository that is shared between these two people There's a show command in order to see what an issue contains or a specific Issue here longer one. I can again pull issues from a remote and List and I will see a new issue appearing here in the other host Now let's try the another example. I will now get issues from github issues So I initialize a new issue tracker with github issue in it And now specify that I want to import issues from github using this URL and it imports existing github issue So issues that github is tracking. I can see them here. I Can see a specific issue who's been assigned tags and so on all the things that the github issues support I Can change things see again so add the milestone for example or Change the due date for github. There are some things that github support and some things that github supports. We have the superset of the two I Can close an issue and then I can export the issues back into github issues or github I will need to have the credentials, especially if I want to pull more than a few issues So this is how the system appears in practice Thank you You also get some goodies so sub command auto completion or sha auto completion More goodies you can use the gith commands that you love and know So for example rebase in order to directly change things everything change you made is recorded as a gith commit You can dump an issue in JSON format to process it in another way And there's a log of the issues that are there for help. There is of course a List of all the commands available automatically generated from the source code so that it's always complete and something I consider important. We should all try in our projects and nine page manual proper Unix manual page How does it work internally? I will finish with that so internally what you see is a dot issues Directory and inside it there are templates for the description and comment you can modify it and commitment all your Colleagues will share them and use their own an issues directory and for every issue You have the sha hash which is created through the hash of the git commit that creates the issue So, you know, it's almost impossible to have a duplication here And for every issue you have the description the tags the milestone the comments and other things that are associated with That issue comments is a director and again each comment is associated with the sha hash of the Git commit that created that issue the configuration folder and Details about the import so that you can stay in sync and push and pull the things that are exactly needed from github or GitLab We will hopefully be running Google summer of code again next year So if you have any cool ideas you want to add or if you want to work on perhaps a graphical user interface If you feel too don't feel sure about always using the command line feel free to look for it up and apply This brings me to the end of this presentation. Thank you very much Okay, so we've got a while for questions Is there any git parts git specific part in it? It's written in shell as a shell script full of git commands So you have to go and replace every git command with the corresponding other version controllers Understand the question is if there are git specific parts in it, right? Yes, so it's a heavily get Dependent you would have to add an abstraction layer to interface between different systems but there are text files and they get specific things that are done are Push pull commit so there are few the rest are things that are Available in every system you think you commit files in the structure that I showed Yes, okay, what happens with the conflicts? in general the idea is that they the same thing that happens with With the when you pull data from a repository you get a conflict and you have to resolve it now if you go up streams And you push things up things might get modified with the truth source of truth that you have because a GitHub doesn't have a Way to do this atomically so a proper process would be to pull things from to import the issues again Resolve any conflicts you can do that commit them and then push and hopefully nobody has done that in that small window Yes, right The question is whether we can have the numbers of a github issues I think this is something that can be easily done should be three lines of code It's a very good idea if you put it up in an issue I Huck it in the afternoon. I think you had the two questions, right? How could we automate the github Process so that when things change on github it automatically Mirrored here. I would build on top on it on top of it So at some end point that would and listen for those events and then invoke the command It's not there, but I don't think it should be difficult to do Yes, have a look with that in the case with you or not not yet Yes, I wanted to ask if you will try to push it upstream I mean to get source directly like be part of gith So the question is if I have tried to push it upstream be part of gith if I commune of gith or github Yeah, I mean gith like be part of the gith not just additional thing, but just part of the gith The question is if I have tried to push it upstream to gith no I haven't because the plug-in interface of gith is beautiful Maybe I should it's an interesting idea. Yeah, so please try to push it upstream Okay, thank you for the suggestion if anyone wants to share experience of how to do that please talk to me Hi, how does it compare to bugs everywhere? How's it does it compare to bugs? Everywhere I have a list of at the end of the read me file I've a list it's bus bugs everywhere is another system that works in the same way There have found another five systems around the same idea at the end of the read me file I have short one liners that have the comparisons. I don't remember exactly for each system how it compares of the top of my head Yes, is there a way to close an issue by a commit message or without a commit hook again in Git issue to issue another git command that would close the issue So it's a hook plus issuing the two commands that would close the issue when it grabs for the issue number So you don't have precrafted hook to put it. It's not precrafted now It means I will have to have to create a plug-in mechanism for gith issue but it's an interesting idea and very I'm very encouraged with all these ideas and things that can be built on top of it That's a beauty of Unix tools and the Unix philosophy any other questions. Thank you very much again