Publish developer repositories on cgit: Difference between revisions

From Alpine Linux
No edit summary
mNo edit summary
Line 1: Line 1:
Developers with SSH access can publish their repositories repositories on [http://git.alpinelinux.org/ cgit].
Developers with SSH access can publish their repositories on [http://git.alpinelinux.org/ cgit].


== Create a repository ==
== Create a repository ==
Create a directory on your private computer
Create a directory on your private computer
{{cmd|mkdir mytest
{{cmd|mkdir mytest
cd mytest}}
cd mytest}}
Line 20: Line 21:


== Publish it on git.alpinelinux.org ==
== Publish it on git.alpinelinux.org ==
Set the section for cgit
Set the section and your name for cgit.
{{cmd|vim mytest.git/cgitrc}}
 
Add something like this to the file
{{cmd|<nowiki>cat <<EOF >> mytest.git/cgitrc
section=Developer ncopa
section=Developer Your_alias
owner= Your_full_name
EOF</nowiki>}}


Copy the content to ~/cgit dir on [http://git.alpinelinux.org/ git.alpinelinux.org]
Copy the content to the directory ~/cgit on [http://git.alpinelinux.org/ git.alpinelinux.org]
{{cmd|scp -r mytest.git git.alpinelinux.org:cgit/}}
{{cmd|scp -r mytest.git git.alpinelinux.org:cgit/}}


Line 33: Line 36:


== Add upstream source to merge with ==
== Add upstream source to merge with ==
If the project you uploaded is a clone of an existing repo (aports for example), add the original source as a git remote repository ("upstream" can be whatever name you want to assign to the remote repository):
If the project you uploaded is a clone of an existing repository (aports for example), add the original source as a git remote repository ("upstream" can be whatever name you want to assign to the remote repository):
 
{{cmd|git remote add upstream git://git.alpinelinux.org/aports}}
{{cmd|git remote add upstream git://git.alpinelinux.org/aports}}
Then, to synchronize your local copy with upstream then push your changes (might need to fix merge conflicts if/when they happen):
Then, to synchronize your local copy with upstream then push your changes (might need to fix merge conflicts if/when they happen):
{{cmd|git pull upstream master
{{cmd|git pull upstream master
git push}}
git push}}
Line 45: Line 51:
{{cmd|cd /your/private/repo/where/you/work/reponame
{{cmd|cd /your/private/repo/where/you/work/reponame
git config remote.origin.pushurl "ssh://user@dev.alpinelinux/home/user/cgit/reponame.git"}}
git config remote.origin.pushurl "ssh://user@dev.alpinelinux/home/user/cgit/reponame.git"}}
Now 'git pull' pulls the public repo, and 'git push' pushes to '''your''' public repo.
Now 'git pull' pulls the public repo, and 'git push' pushes to '''your''' public repo.
{{Note|The path where you want to push to should first be prepared as described in above section 'Create a bare repo' and 'Publish it on git.alpinelinux.org'}}
{{Note|The path where you want to push to should first be prepared as described in above section 'Create a bare repo' and 'Publish it on git.alpinelinux.org'}}

Revision as of 17:16, 3 July 2011

Developers with SSH access can publish their repositories on cgit.

Create a repository

Create a directory on your private computer

mkdir mytest cd mytest

init git and create a first commit

echo "testing" > test.txt git init git add . git commit -m 'initial commit'

Create a bare repo

Clone it to a bare repo

cd .. git clone --bare mytest mytest.git

Set the description

echo "My git/cgit test" > mytest.git/description

Publish it on git.alpinelinux.org

Set the section and your name for cgit.

cat <<EOF >> mytest.git/cgitrc section=Developer Your_alias owner= Your_full_name EOF

Copy the content to the directory ~/cgit on git.alpinelinux.org

scp -r mytest.git git.alpinelinux.org:cgit/

Clean up

We no longer need the local bare repository.

rm -rf mytest.git

Add upstream source to merge with

If the project you uploaded is a clone of an existing repository (aports for example), add the original source as a git remote repository ("upstream" can be whatever name you want to assign to the remote repository):

git remote add upstream git://git.alpinelinux.org/aports

Then, to synchronize your local copy with upstream then push your changes (might need to fix merge conflicts if/when they happen):

git pull upstream master git push

Git Push (Distributed Workflows)

If working with Distributed Workflows you would 'pull' from public repo, 'push' to another publically accessable repo (where you have write access), main developer (who has write access to public repo) 'pulls' you changes from your pub.accessed.repo into the public repo.

To make it easier for you to work, you can configure 'git push' to push your work to your publically accessable repo ('git pull' would still pull from same repo as you cloned from).

cd /your/private/repo/where/you/work/reponame git config remote.origin.pushurl "ssh://user@dev.alpinelinux/home/user/cgit/reponame.git"

Now 'git pull' pulls the public repo, and 'git push' pushes to your public repo.

Note: The path where you want to push to should first be prepared as described in above section 'Create a bare repo' and 'Publish it on git.alpinelinux.org'