Merken

Get a Jumpstart on Collaboration and Code Review in GitHub

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
at the end
of the day at
the time the the welcome everyone
that I am so thrilled to have the opportunity to share with you what I've learned as the Genghis Khan Yunis website I want to teach all of you a process that will get you started collaborating in doing code review as quickly as possible I'm going to show you a lot of screenshots and diagrams because I want you to understand what the process should look like but don't worry if you miss anything because at the end of my talk there'll be a link to some useful resources including all of the commands of the showing you the and my slides in a video of my talk will be online leader so firstly I wanna
tell you how I got started with open source contribution because it's a fun story and I think it will show you that there are unique ways to get involved so back in April 2013 I signed it forget N I did know how to get started so my account sat unused for about 7 months and 1 day I was looking at Twitter and this meaning dancing career had made this incredibly delicious talk a meal and he decided to go on get have and create a project to collaborate and sharing talker recipes so I went to the project information and there was 1
sentence that had a really drastic impact on me and it was are you need to get high but want to contribute well that was me
and I became extremely determined to contribute to that project and I did I Sabina my 1st request there and it was a little bit addicted to be honest with you the so I kept
using data and get have and I kept getting better at it and eventually I started to contribute to the Django con US website and this year I became website share and maintainer in I'm going to use the jingle con US website as an example throughout my talk so firstly let's
be clear about what get having get are get has get have is a web site built on the version control system gets get have as
a social network you can make a user profile follow people follow their activity in your news feed and find interesting projects but the most important
part of get have is that users can store and work on code together in repositories for example if you go to the Django con US organization account you'll see a list of proposed and at the top of this particular screenshot is the jingle kind US website read so if you click on the hyperlink it will open up the repo and you can see the files and folders and you can look through the website could for the website the but when we're working on colored we can't do everything in a website for example you might want to make a copy of the Django con US website code in your local development environment on your computer and install whatever software is necessary and run the code in your local browser for instance if you want to add a feature or test a pull request branch this is where did it is really useful it's installed in your local development environment and you can use it in your command line 2 and get can make a snapshot of your project at any point in time and you can even revert back to that snapshot of you need to do so on the screen is a screen shot of my local development environment in the background I have get have open in the browser and in front of that I have my local folder window and my command line and I could go to the retelling get have heaven I can take the web address from the Github repo and copy and paste it into a command in the command line and I can use that to make a copy of the repo in my local development environment which is called cloning the so I can then make changes to the code and push the changes back to get heaven meanwhile other people will be doing the same thing on their computers and I'm going to go much more into detail about the process in a few minutes but I wanna
tell you a concept that I think is really really important that I don't hear people talk about level responsibility increases you need to be able to switch between multiple tasks for instance you might wanna keep your main code base up-to-date create 1 or more features and you cut you when
you need to switch between these when I 1st started using get have it was pretty common I might go into a repo and my own personal account and click on a pencil icon and open a file and make a change in click Save while this is fine but imagine if you're working with multiple other people and you're all doing that it's not very practical for instance how would you give feedback of your all just making changes so there's actually a way to make changes that enables you to switch between multiple tasks the way that you need to to collaborate you code review and that is by
using branches their best practice and any get have the user can use some so for instance when you 1st create a repo by default you're working in a branch called master so say for instance you wanna make a change to the master branch you can make a copy of the entire master branch and give it a new name another 2 branches in the same repo the master branch and a feature branch and you can do this an unlimited number of times and you can switch between them to work on them so at some point the future branch offer may think that the branches down and they submit a pull request and the feature branch becomes a pull request branch the and that it changes are accepted they'll be merged into the master branch of the master branch will be like it was before except it will now have the changes on it but something interesting you know is that feature branches and pull request branches are both just examples of branches and they can be worked on in much the same way so let's go back to a screenshot of editing of filing get hub at the bottom before you click Save there's a radio button that you can click to indicate you wanna create a new branch and you can give it a new name so now when you click to save the changes they want save in the current file you'll have a new branch you can also create and work on branches through the command line and I'm going to show you that process later so in this talk we're going to determine which collaboration approach to use were going to clone AREPO into our local development environment created feature branch make a change pushed a branch to the Github repo week-long from and submit a pull request to the Django cuneus website repo and then we're going to review the 2 different types of pull requests as a Django con US website repo maintainer and then I'll have a few recommendations the so let's determine which collaboration approach to use there
is a fancy term that actually just means how people work on software together it's collaborative development model and they're 2 different models there's the shared repository model and the work poor model and the 2 different models typically correspond to 2 different account types and which model you use depends on whether or not you have bright permission to the repo
so there are 2 types of accounts organization accounts such as Django con organization and user accounts such as my own personal account and write permission is really important and all this 1 of user has write permission to revoke it means that they can make changes directly inside of the repo so let's
look at a couple examples of bright permission and collaboration so 1st we'll look at the shared repository model as shared repository is typically found in an organization account which makes sense when you think of the word shared so for example this year I became a maintainer and the Django decline US websites I was given right permission to the gender kind US repel which is a shared repository so along with the other maintainers who also have write permission I can make changes directly inside of the repo the form can pull modeling
contrast is typically found in user account repose for example when I 1st came across the Django con US website repo I wanted to contribute but I wasn't a maintainer side and have write permission so I needed to make a copy of the reaper which is called a fork into my own user account which I have write permission to so that I could make a change to it and I could submit a request a pull request to the gender con US website repo so
let's look at how we fought the repo for example if we go to the Django kind US website Reaper we can take the port button or we can try to edit a file In a github repo that we do not have write permission to and get help will automatically for the Repo into our user account and there will be a message
notifying us that it has been bought
and the fork message will basically lead us back to our user accounts an analyst to repost there will now be an entry for the fork it will say where was forked from and if you click on the hyperlink it will open the repo and something useful the notices that the Repo you park there were the fork to reap U R L will have your user account name in it because it's a copy under your user account so the fork is an exact copy of the original rebo at the time it was for and you can basically make any change to even deleted an original repos are going to be affected so
now we're going to clone AREPO enter local development environment create a feature branch make a change push the branch back to get answer but a poor request so minute couple of diagrams that I hope will give you an idea of what what the process is like depending on which collaborative development model you're using so in the fork and pull model you fork the repo any kind the
fork and it's useful to know at this point that get will track some information about your project for instance it will know where your code was cloned from so in relation to the cloning in your local development environment they get have rebo weak flown from is called it remote repo and get will call at origin and we can now use the name origin in our command line to refer to the remote repo so we can push and pull changes back and forth between the local development environment and the get habría both so we make our changes and we push the changes back to the fore the and we Sabina part so this
is what it looks like when we use a shared repository model we don't need a fork now because we have write permission so we're simply cloning the shared repository and a shared repository I get have is now a remote origin and we make our changes would push the changes back to the shared repository and we said that the bora class the so now I'm going to show you
a generic process that you can use regardless of which collaborative development model you using we're simply cloning which ever repo you have write permission to so let's go back to the screenshot of my local development environment and I can see that I'm working on my home directory in this matters because of the repo is going to be cloned into the directory were working and so at the top of my command line in front of my command prompt it has the name of my home directory so I'm going to type the command get clone and you can see the the little commands at the top and get clone all type that into the command line and then I'll copy and paste the URL from the browser for the repo and the hint hint inner so there will now be a folder in my home directory by the same name as the get her brief but which is 2017 dodging no common value us and it's going to be filled with the contents of the repo so I now have a copy the code on github and also copy my local development environment so I need to change
directory into the folder in my command line so that I can work there so I type C D 2017 . conduct US which is the name of the folder so I've also clicked on the folder manually in the folder window so I can see the contents visually but I can see that I'm working in the new folder because the name of it is at the top of my command line in front of the prompt the and
hypothetically if I were to open up the get have 3 bow and open up the folder window in front of it I would be able to compare compare the files and see the corresponding files but the files on get have there are going to render differently because the rendered in the browser whereas the files locally or all files so then you can use the command
get branch to verify which branches checked out on an initially you will be on the d default branch which in this case is master so then we create and check out which means switch to a feature branch and we're gonna call example branch and we want to branch off of the branch that we intended changes to be merged into and this is something really important to know when you switch branches in your local development environment the folders and the the files in the folder switch to the files of the branch and you might not notice it at 1st because when you create a branch it'll be an exact copy of another 1 but if you make a change and switch to another branch will notice that the difference the so then we can open whatever
file we want a change in a text editor and make our change and say that and then we need
to add and commit are changed to get version control and we're gonna make a message and by the way make sure your change works the changer making to the code and probably make message that's more clear than the sum and then pushed a new branch example branch to get help to our origin the repo that we cloned from that we have write permission to so now if we go back to
origin there will be a branch and a repo and there will be a message telling us that it's there and if you click on a branch how you can choose the name of the branch and switch to the new branch and you can actually see the changes you've made and that's the way that you can look at different branches by toggling back and forth between the branches in the branches have the so not to
submit the pull requests if you're ready to do that we want to go to the repo that you want your changes to be merged into so we're going to go to the Django con US website re with if we're not there already so there will also be a message they're telling us about the branch if it was through work because get Hubble detected so we want to click on the compare and pull request button and make sure the base branch is the branch you want your changes merged into and make sure the compare branches branch and create a title and perhaps a description for the poor request if you poor class this rule for work there will be a box checked by default that will give maintainers the ability that at the pull request so double check your changes and click or request quest so now we're going to review
the 2 different types of poor requests as aging con US website repo maintainer it so when the
plot classes been submitted people who are maintainers forging a con US website repo will receive a notification either by browser by e-mail letting them know that there's a pull request and that notification will lead them to the pull request have an eye browser so then they want to look over the pull requests information there will be the title and description and there will be a little hyperlink that says files changed and they can click on add to literally see and a summary of what the changes are so underneath that there will be information about how tumors support us there will be a merge button that you can click to merge in the browser or there will be a link that says command line instructions so
when you click on that link it will open up a set of instructions for how to review and merge the pull request in the local development environment these instructions will be different be be different depending on whether the poor request was submitted through a fork or through a shared repository which I'm going to explain in a minute
but 1st let's go over what the options are of what you can do when you review a pull request the so the 1st 2 options would involve just clicking the merge button and get have without running the code locally for example you might look at the pull request filed and see that you don't need to make any change to what has been submitted and you might just click merge or you might look at that and see that there's just a small change that needs to be big and similarly to how we added a file earlier you might just go into the pull request file and make a small change and click merge the other
options involve fetching the pull request branched into your local development environment and running the code there so say for instance you do that and you're happy with that no gene change needs to be made you can go back to the browser just click merge or if the change needs to be made there are a few different things that can happen you can ask the pull requests author to make a change to the pull request or you yourself can make a change to the pull request branch you could then push the additional change to the pull request branch on get hot or you can merge the branch with the branch it's intended to me merged with and you can do that locally and then push that life to the branch and get so this is why the pull
request instructions are different as a Django US website maintainer you're able to fetch updates From the Django kind US website repo into a hidden folder name . get in your local development environment the updates will include the branches made directly to the Django con US website repo they will not include branches made throw for because those came from outside of the origin so branches may throw for calf to be pulled individually into our local development environment so I
wanna point out something and that is that even though these instructions instructions from the pull request page and for fetching the the branch locally even though they say that the for a pull request they can actually be used by any maintainer to work on a branch that they have write permission to if a poor request has already been made the the changes will simply be added to the pull request up to the point that the pull request is merged so for a shared repository pull request we use the command get such origin to fetch that updates into the docket folder we create and check out to a new local branch which we gave and given name to and we insert the pull request branch contents from the docket folder into the new local branch by referring to the branches origin forward slash and the branching we can merge master into that feature branch to make sure it's up to date in case there were any changes made since the pull request was made and then similarly to before when we had a branch and we made a change and we added in committed the changes to version control if you do that to this pull request branch you can push the additional commits to the branch on get have for a pull request submitted throw for we create a new branch of master and pull on the contents of the pull request branch from the port if we make a change we can also post the additional change to the fork to the branch if we have been given permission to edit the pull request so this piece of code would be if
we decide to merge a pull request locally and pushed to the master branch you are checking out to the master branch merging the feature branch into the master branch than pushing the change to the wide master branch and get help so I wanna just give
you I'm a few quick recommendations
the my 1st recommendation is that you go to the useful resources section and follow the links to the GenGO con US website repo documentation and read it and make your documentation in your own projects as welcoming and positive as ours we have really great documentation my 2nd recommendation that if you have the authority go into every post settings and click on the branches have and protect your main branch or main branches so that they can be deleted accidentally for example your master branch my 3rd recommendation is that
when you're looking for a project to contribute to you can search by tag define projects that use triaging triaging is where issues are sorted by difficulty level for instance as both a collaborator or a code review where you can actually cherry-pick issues and pull requests that fit your skill level and that can help you to level up over time and my 4th
recommendation is that you practice your skills and workflow don't be afraid to delete you're for instance your folder locally if you have to start over if that's what you need to do you can also use your own account as a sandbox you can actually create a repo and submit pull requests yourself and practice that way and my last but
definitely not least recommendation is that you become a contributor to the Jane con US what site next year we have a diverse group of contributors of all skill levels and we're always looking for more contributors so let us know if you're interested and thank you everybody
and feel free to contact me check out the useful resources and I'm going to take questions and the hallway later think you know the the the
home n things used
Rechenschieber
Kollaboration <Informatik>
Diagramm
Web Site
Prozess <Physik>
Prozess <Informatik>
Maschinensprache
Maschinencode
Maschinensprache
Binder <Informatik>
Computeranimation
Videokonferenz
Arithmetisches Mittel
Repository <Informatik>
Garbentheorie
Twitter <Softwareplattform>
Open Source
Projektive Ebene
Information
Computeranimation
Softwarewartung
Repository <Informatik>
Web Site
Bit
Gemeinsamer Speicher
Maschinencode
Web Site
Projektive Ebene
Computeranimation
Homepage
Software
Web Site
Kontrollstruktur
Datennetz
Versionsverwaltung
Web Site
Projektive Ebene
Versionsverwaltung
Gerade
Benutzerprofil
Computeranimation
Web Site
Punkt
Prozess <Physik>
Selbst organisierendes System
Browser
Mathematisierung
Maschinensprache
Computerunterstütztes Verfahren
Computeranimation
Übergang
Task
Repository <Informatik>
Mailing-Liste
Selbst organisierendes System
Multiplikation
Task
Software
Maschinensprache
Maschinencode
Klon <Mathematik>
Bildschirmfenster
Endogene Variable
Touchscreen
Softwaretest
Kollaboration <Informatik>
Stellenring
Verzweigendes Programm
Web Site
Mailing-Liste
Programmierumgebung
Elektronische Publikation
Hyperlink
Projektive Ebene
URL
Programmierumgebung
Repository <Informatik>
Instantiierung
Rückkopplung
Stellenring
Verzweigendes Programm
Web Site
Subtraktion
Prozess <Physik>
Punkt
Mathematisierung
Zahlenbereich
Computeranimation
Task
Repository <Informatik>
Typentheorie
Softwarewartung
Klon <Mathematik>
Datentyp
Minimum
Default
Ganze Funktion
Kollaboration <Informatik>
Elektronische Publikation
Verzweigendes Programm
Stellenring
Strömungsrichtung
Programmierumgebung
Elektronische Publikation
Bildschirmsymbol
Softwarewartung
Kollaboration <Informatik>
Bildschirmsymbol
Repository <Informatik>
Programmierumgebung
Instantiierung
Subtraktion
Selbst organisierendes System
Mathematisierung
Datenmodell
Schreiben <Datenverarbeitung>
Term
Computeranimation
Repository <Informatik>
Selbst organisierendes System
Kollaboration <Informatik>
Informationsmodellierung
Software
Typentheorie
Datentyp
Softwareentwickler
Modelltheorie
Repository <Informatik>
Schreiben <Datenverarbeitung>
Web Site
Kollaboration <Informatik>
Selbst organisierendes System
Mathematisierung
Web Site
Computeranimation
Softwarewartung
Repository <Informatik>
Bildschirmmaske
Informationsmodellierung
Kollaboration <Informatik>
Geschlecht <Mathematik>
Wort <Informatik>
Kontrast <Statistik>
Repository <Informatik>
Repository <Informatik>
Web Site
Bildschirmsymbol
Elektronische Publikation
Repository <Informatik>
Message-Passing
Computeranimation
Kollaboration <Informatik>
Stellenring
Prozess <Physik>
Mathematisierung
Datenmodell
Stellenring
Verzweigendes Programm
Web Site
Programmierumgebung
Computeranimation
Repository <Informatik>
Kollaboration <Informatik>
Diagramm
Informationsmodellierung
Hyperlink
Klon <Mathematik>
Softwareentwickler
Repository <Informatik>
Programmierumgebung
Message-Passing
Klon <Mathematik>
Stellenring
Punkt
Klasse <Mathematik>
Mathematisierung
Relativitätstheorie
Datenmodell
Stellenring
Web Site
Programmierumgebung
Maschinensprache
Computeranimation
Repository <Informatik>
Informationsmodellierung
Klon <Mathematik>
Mereologie
Projektive Ebene
Information
Repository <Informatik>
Programmierumgebung
Klon <Mathematik>
Instantiierung
Prozess <Physik>
Browser
Stellenring
Programmierumgebung
Maschinensprache
Computeranimation
Informationsmodellierung
Kollaboration <Informatik>
Verzeichnisdienst
Klon <Mathematik>
Bildschirmfenster
Datentyp
URL
Inhalt <Mathematik>
Softwareentwickler
Verzeichnisdienst
Repository <Informatik>
Programmierumgebung
Wärmeleitfähigkeit
Repository <Informatik>
Verzweigendes Programm
Subtraktion
Verzeichnisdienst
Browser
Mathematisierung
Bildschirmfenster
Stellenring
Verzweigendes Programm
Elektronische Publikation
Default
Programmierumgebung
Computeranimation
Texteditor
Elektronische Publikation
Gewichtete Summe
Mathematisierung
Verzweigendes Programm
Versionsverwaltung
Maschinensprache
Elektronische Publikation
Repository <Informatik>
Message-Passing
Computeranimation
Verzweigendes Programm
Web Site
Quader
Mathematisierung
Klasse <Mathematik>
Verzweigendes Programm
Web Site
Schlussregel
Paarvergleich
Computeranimation
Softwarewartung
Repository <Informatik>
Deskriptive Statistik
Repository <Informatik>
Default
Message-Passing
Stellenring
Kollaboration <Informatik>
Web Site
Subtraktion
Prozess <Informatik>
Browser
Mathematisierung
Klasse <Mathematik>
Plot <Graphische Darstellung>
Programmierumgebung
Elektronische Publikation
Binder <Informatik>
Computeranimation
Softwarewartung
Repository <Informatik>
Deskriptive Statistik
Garbentheorie
Hyperlink
Softwarewartung
Typentheorie
Klon <Mathematik>
Datentyp
Information
Repository <Informatik>
Konfiguration <Informatik>
Mathematisierung
Stellenring
Browser
Maschinensprache
Binder <Informatik>
Elektronische Publikation
Gerade
Computeranimation
Konfiguration <Informatik>
Menge
Maschinensprache
Repository <Informatik>
Programmierumgebung
Autorisierung
Schreiben <Datenverarbeitung>
Videospiel
Web Site
Konfiguration <Informatik>
Browser
Mathematisierung
Verzweigendes Programm
Stellenring
Web Site
Störungstheorie
Maschinensprache
Computeranimation
Konfiguration <Informatik>
Softwarewartung
Maschinensprache
Repository <Informatik>
Programmierumgebung
Instantiierung
Verzweigendes Programm
Punkt
Mathematisierung
Verzweigendes Programm
Versionsverwaltung
Gemeinsamer Speicher
Maschinensprache
Computeranimation
Homepage
Softwarewartung
Repository <Informatik>
Inhalt <Mathematik>
Repository <Informatik>
Web Site
Kollaboration <Informatik>
Stellenring
Verzweigendes Programm
Dienst <Informatik>
Programmierumgebung
Binder <Informatik>
Computeranimation
Repository <Informatik>
Menge
Softwarewartung
Typentheorie
Maschinencode
Klon <Mathematik>
Garbentheorie
Projektive Ebene
Repository <Informatik>
Kollaboration <Informatik>
Projektive Ebene
Maschinensprache
Repository <Informatik>
Computeranimation
Normalvektor
Programmfehler
Instantiierung
Übergang
Web Site
Gruppenkeim
Gruppenkeim
Web Site
Übergang
Twitter <Softwareplattform>
Computeranimation
Übergang
COM

Metadaten

Formale Metadaten

Titel Get a Jumpstart on Collaboration and Code Review in GitHub
Serientitel DjangoCon US 2017
Teil 22
Anzahl der Teile 48
Autor Michel, Katherine
Mitwirkende Confreaks, LLC
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/33190
Herausgeber DjangoCon US
Erscheinungsjahr 2017
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Even though open-source collaborators and code reviewers are needed more than ever, the few git learning resources that focus on these subjects are not beginner friendly. This is a missed opportunity! As the DjangoCon US Website Chair, I review pull requests submitted to the website repo. This has given me the opportunity to develop a beginner-friendly, best practice GitHub workflow. I can jumpstart your collaboration and code review skills by sharing what I’ve learned with you. This talk is for anyone, but one of my goals in giving it is to encourage other women to take leadership roles.

Ähnliche Filme

Loading...