2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-22 18:17:09 +00:00

Add initial Launchpadtutorial conversion; to be deprecated

Steve Beattie 2017-11-03 16:52:24 -07:00
parent 6098042bcd
commit be140e5234

183
Launchpadtutorial.md Normal file

@ -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: <https://somesite/bug/123456/>”, 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
<https://github.com/termie/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
- <https://github.com/termie/git-bzr-ng/issues/38>
- tracking bug in launchpad <https://bugs.launchpad.net/bzr/+bug/541626>
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.
- <http://bazaar.launchpad.net/~larstiq/bzr/bug541626/revision/6524>
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