diff --git a/Launchpadtutorial.md b/Launchpadtutorial.md new file mode 100644 index 0000000..2e090cf --- /dev/null +++ b/Launchpadtutorial.md @@ -0,0 +1,183 @@ +What are Launchpad and Bazaar +============================= + +Launchpad is a web based platform for software development and code hosting. + +Bazaar (also known as bzr) is a distributed version control system +that is designed to be easy to use. It is the version control system +of choice for launchpad and provides good integration with Launchpad. + +More recently, Launchpad has added support for the git version control system. + +Downloading AppArmor +==================== + +Downloading tarballs +-------------------- + +The current release tarballs can be found in +[launchpad](https://launchpad.net/apparmor), by selecting +the series and then from the series page selecting the desired +download. + +Checking out the source tree with bazaar +---------------------------------------- + +To get an svn style checkout of the current development branch do + +` bzr co lp:apparmor` + +to create a local branch + +` bzr branch lp:apparmor` + +Checking out the apparmor source tree with git +---------------------------------------------- + +There is work underway to move the AppArmor source trees to +git. Otherwise, you can try to use git-bzr-ng as described in the +Old Stuff section. + +Checking out the apparmor-profiles repository with git +------------------------------------------------------ + +The [AppArmor Profiles](https://launchpad.net/apparmor-profiles) +repository is now hosted with git on Launchpad. To check out (aka +clone): + +` git clone `[`https://git.launchpad.net/apparmor-profiles`](https://git.launchpad.net/apparmor-profiles) + +AppArmor developers who have commit/push rights will probably want to use the git+ssh method instead: + +` git clone git+ssh://LAUNCHPAD_USERNAME@git.launchpad.net/apparmor-profiles` + +(See [Configuring git with +Launchpad](https://help.launchpad.net/Code/Git#Configuring_Git) to +configure git to mimic the lp:apparmor-profiles bzr style references.) + +Making a merge proposal to apparmor-profiles with launchpad and git +------------------------------------------------------------------- + +First, clone the master repo: + +` git clone `[`https://git.launchpad.net/apparmor-profiles`](https://git.launchpad.net/apparmor-profiles) + +Make a branch, and commit your changes to it: + +` git branch -b BRANCH_NAME` + +(Hack away with tool of choice) + +` git commit` + +Then, push your changes to launchpad. To do so: + +- add a remote repository under that is associated with the apparmor-profiles project: + +` git remote add REMOTE_NAME git+ssh://LAUNCHPAD_USERNAME@git.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME` + +(`YOUR_REPO_NAME` can be something simple like `apparmor-profiles`. `REMOTE_NAME` should be something to let you know it points to an different location from the primary repo on Launchpad.) + +- push your branch + +` git push REMOTE_NAME BRANCH_NAME` + +It should show up shortly at + +` `[`https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME`](https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME) + +and the specific branch should be available from + +` `[`https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME/+ref/BRANCH_NAME`](https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME/+ref/BRANCH_NAME) + +From the latter page, there should be an option under the section *Branch Merges* to **Propose for Merging**, which should point to + +` `[`https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME/+ref/BRANCH_NAME/+register-merge`](https://code.launchpad.net/~LAUNCHPAD_USERNAME/apparmor-profiles/+git/YOUR_REPO_NAME/+ref/BRANCH_NAME/+register-merge) + +This page will let you propose a merge to the main project. The *Target Reference Location* is a fancy name for the main project's branch you wish to merge to; for the main apparmor-profiles development branch, you would enter *master* into this field. + +Merging a proposal into the apparmor-profiles repo +-------------------------------------------------- + +**NOTE: for apparmor-profiles maintainers** + +Once a merge proposal is in shape to be merged, do the following with git. + +- add the merging branch as a remote to your git tree: + +` git remote add REMOTE_NAME git+ssh://YOUR_LAUNCHPAD_USERNAME@git.launchpad.net/~THEIR_LAUNCHPAD_USERNAME/apparmor-profiles/+git/THEIR_REPO_NAME` + +- checkout their branch and review the commits: + +` git checkout REMOTE_NAME/BRANCH_NAME` + +- switch back to *master* and merge their changes: + +` git checkout master` +` git merge --no-ff REMOTE_NAME/BRANCH_NAME` + +(The `--no-ff` will force a seperate merge commit, helping to clarify who merged/approved the branch. Include a short description, any bug reference urls “Bug: ”, and Acked-Bys as need be in the merge commit message.) + +- Once you're happy with the merge and your commit message (`git commit --amend` will let you edit your commit message), push the commit to launchpad: + +` git push origin master` + +That's it! Launchpad will notice the merge and mark the state of the merge proposal as *Merged*. You can delete the remote from the merge requestor from your git tree, or you can keep it around if you expect the proposer to future merge requests. + +Links +===== + +Launchpad help +-------------- + +- [Launchpad](https://help.launchpad.net/) + +Bazaar +------ + +- [bazaar](http://bazaar.canonical.com/en/) +- [Arstechnica:An introduction to collaborative development with Launchpad](http://arstechnica.com/business/2010/02/an-introduction-to-collaborative-development-with-launchpad.ars) + +git +--- + +- [Using git with Launchpad](https://help.launchpad.net/Code/Git) +- [Pro Git book online](https://git-scm.com/book/en/v2) + +Old Stuff +========= + +The apparmor development repository is not currently mirrored with git. There is an effort underway to make this happen again + +Checking out the source tree using git + git-bzr-ng +--------------------------------------------------- + +It is possible to checkout the userspace tools using git + git-bzr-ng + + + +install git-bzr-ng copy into git commands + +`on Ubuntu cp git-bzr.py /usr/lib/git-core/git-bzr` +`chmod +x /usr/lib/git-core/git-bzr` + +There is a known common issue with bzr-fast-import that can cause git-bzr-ng to fail with newer versions of bzr + +- +- tracking bug in launchpad + +To fix the issue we need to grab the patch from the end of the bug and patch bzr-fast-import. The patch can be found at the link below, click on the “download diff” link. + +- + +patch the bzrlib/btree\_index.py on your system + +- on Ubuntu it can be found at /usr/share/pyshared/bzrlib/btree\_index.py + +Clone the repository + +`git bzr clone lp:apparmor` + +` git clone `[`git://git.kernel.org/pub/scm/linux/security/apparmor/apparmor-bzr-mirror.git`](git://git.kernel.org/pub/scm/linux/security/apparmor/apparmor-bzr-mirror.git) + +brief step by step of using bzr with AA