====== Using git for gPXE development ===== ===== Overview ===== During development, you will be working with three git repositories: * The master project repository * Your local working repository * Your personal public repository You will edit code in your local working repository. As applicable, you should push changes from your local working repository to your personal public repository. This allows us to see your code. You will occasionally need to pull changes from the master project repository, in order to keep your local working repository up to date with the main gPXE codebase. When your code is ready to be merged into the main gPXE codebase, we will pull from your personal public repository. ==== Background/Useful reading ==== There are numerous sources for documentation and tutorials about git usage. * [[https://git.wiki.kernel.org/index.php/GitDocumentation|Git Docs]] offers numerous links to helpful documentation * http://help.github.com/ has information and tutorials for git to get you started * [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html|gittutorial]], [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial-2.html|gittutorial-2]], [[http://www.kernel.org/pub/software/scm/git/docs/everyday.html|Everyday GIT]] and the git man pages offer a good starting point and quick commands * [[http://www.newartisans.com/blog_files/git.from.bottom.up.php|Git from the Bottom Up]] offers a good resource to understand how git works ==== Git Commands ==== Older versions of git also offered commands in the style of "git-command" as an aid as shells didn't have the logic to complete "git command". Newer versions don't use that style by default as some newer shells now offer this logic. ===== Setting up your repositories ===== ==== Local repo ==== Start by downloading the source tree as per the instructions on the [[:download|Download]] page: git clone git://git.etherboot.org/scm/gpxe.git This will create your local working repository. ==== Public repo: etherboot.org ==== Add a link to your personal public repository: cd gpxe git remote add personal git+ssh://USERNAME@git.etherboot.org//pub/scm/people/USERNAME/gpxe.git where //USERNAME// is your username on rom.etherboot.org. Make sure that your personal public repository is up to date: git push personal ==== Public repo: other ==== Several other sites offer a place to store a free public git repository. Two such sites are [[http://github.com|GitHub]] and [[http://repo.or.cz|repo.or.cz]]. * http://help.github.com/fork-a-repo/ has an example of forking a repo to your own. ===== Example workflow ===== This example shows you the various stages of creating code and publishing it. Start by creating a branch to work in: cd gpxe/src git checkout -b mywork origin/master git push personal mywork Edit and commit some files: emacs drivers/net/mydriver.c git commit drivers/net/mydriver.c Publish your changes: git push personal