: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository

+

: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch

: 2) valid 'Signed-off-by:' line must be in the commit text

: 2) valid 'Signed-off-by:' line must be in the commit text

−

===Rules for alsa-kernel.git===

+

===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===

Note that 'master' branch in alsa-kernel.git is synced with alsa-kmirror.git 'master' branch automatically. So if you add a patch to alsa-kernel.git, it will be merged to alsa-kmirror.git (if no problem occurs) when you initiate 'git push' to the ALSA server. It's really required to see messages from the pre-receive script when something goes wrong. The script is trying to suggest what's going wrong and try to show you a problematic code (diff).

+

No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from

: b) you are modifying a file which is out of sync (scripts directory or so)

+

−

In all other cases, only alsa-kernel.git repository should be used.

+

Please, use --log for the git merge command to show the "subject" of commits.

+

It might be handy to define these git aliases in your .git/config file:

−

====Common problems====

+

[alias]

−

+

apull = !git checkout release && git pull origin release && \

−

; PRE-RECEIVE repositories does not match, please, fix it

+

git checkout build && git pull origin build && \

−

: The alsa-kmirror.git#mastter and alsa-kernel.git#master sources does not match. You have to do manual changes in alsa-kmirror.git repository to sync trees. A diff between alsa-kmirror.git and alsa-kernel.git is printed to stderr, so you can analyze it and do appropriate steps.

+

git checkout mirror && git pull origin mirror && \

−

+

git checkout release

−

; PRE-RECEIVE Patch failed - is it already merged?

+

apush = !git push --tags origin release && git push origin build && \

−

: Appearently, you're trying to apply a patch which cannot be applied cleanly to alsa-kmirror.git#master. One reason might be that the patch is already applied, but the pre-receive script does not know about it. You may add commiter and commitdate to alsa-kmirror/scripts/git-ok-commits file to skip problematic commit (but only if you really verify, that this commit is already in the alsa-kmirror tree).

+

git push origin mirror

+

bmerge = !git checkout release && git merge --log build

+

mmerge = !git checkout release && git merge --log mirror

===Clone repositories===

===Clone repositories===

git clone git@git.alsa-project.org:alsa-driver.git alsa-driver

git clone git@git.alsa-project.org:alsa-driver.git alsa-driver

+

cd alsa-driver

+

git branch build remotes/origin/build

+

git branch mirror remotes/origin/mirror

+

git branch release remotes/origin/release

+

git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel

git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel

−

git clone git@git.alsa-project.org:alsa-kmirror.git alsa-kmirror

To show all branches (includes remote ones):

To show all branches (includes remote ones):

Line 100:

Line 160:

To make a remote branch local:

To make a remote branch local:

−

git checkout -b for-linus origin/for-linus

+

git checkout -b for-linus remotes/origin/for-linus

−

git checkout -b linux-2.6 origin/linux-2.6

+

git checkout -b linux-2.6 remotes/origin/linux-2.6

===Update and rebase using Linus's 2.6 kernel tree===

===Update and rebase using Linus's 2.6 kernel tree===

Line 123:

Line 183:

===Push branch changes to ALSA GIT repository===

===Push branch changes to ALSA GIT repository===

−

git push --tags origin master:refs/head/master

+

git push --tags origin master

−

git push --tags origin linux-2.6:refs/head/linux-2.6

+

git push --tags origin linux-2.6

−

git push --tags origin for-linus:refs/head/for-linus

+

git push --tags origin for-linus

−

Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - we probably need to settle a locking mechanism to prevent inconsistent changes.

+

Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela < perex at perex . cz > if you can do this for branch 'master'.

===Branches===

===Branches===

; master

; master

−

: this branch is for main development (Andrew Morton will get patches for mm tree)

+

: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases

+

: the contents is synced to alsa-kmirror.git

+

+

; linux-next

+

: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased

; for-linus

; for-linus

−

: this branch is for mainstream tree (for Linus Torvalds)

+

: this branch is for mainstream tree (for Linus Torvalds), just temporary branch

; linux-2.6

; linux-2.6

Line 142:

Line 206:

; stable-2.6.<number>

; stable-2.6.<number>

: patches for stable 2.6 kernels

: patches for stable 2.6 kernels

−

−

; private-*

−

: all developers can create a private branch to test a particular set of patches, prefix for these branches is 'private-' (for example private-alsabug-1234, private-tiwai-vmaster etc.)

===Tags===

===Tags===

−

Private tags are not allowed. Only tags identifying ALSA version (alsa-kmirror.git and alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.

+

Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.

===Maintenance===

===Maintenance===

GIT server is maintaned by [[User:Perex]].

GIT server is maintaned by [[User:Perex]].

+

+

==Occasional Developers==

+

This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches

+

+

===clone the repository===

+

git clone git://git.alsa-project.org/alsa-driver.git alsa-driver

+

+

If you live behind a firewall that blocks the git protocol, you can do this instead:

1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch

2) valid 'Signed-off-by:' line must be in the commit text

[edit]Rules for alsa-kernel.git and the mirror branch in alsa-driver.git

Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela < perex at perex . cz > if you can do this for branch 'master'.