|
|
| (16 intermediate revisions by 8 users not shown) |
| Line 1: |
Line 1: |
| | {{header|infra}} | | {{header|infra}} |
| | | | |
| − | Fedora hosted has public repositories for git, bazaar, mercurial, and subversion. These are instructions for adding a new project to one of them.
| + | This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: http://infrastructure.fedoraproject.org/infra/docs/fedorahosted-repo-setup.txt |
| | | | |
| − | {{admon/note|Monotone support has been discontinued due to both lack of a sysadmin to maintain it and lack of projects wanting to use it.}}
| + | For changes, questions or comments, please contact anyone in the Fedora Infrastructure team. |
| − | | + | |
| − | == Mercurial Repository ==
| + | |
| − | You'll need to know three things in order to start the mercurial repository.
| + | |
| − | # PROJECTNAME -- what the project wants to be called.
| + | |
| − | # OLDURL -- how to access the project's current sourcecode in their mercurial repository.
| + | |
| − | # PROJECTGROUP -- the group setup in the account system for readwrite access to the repository.
| + | |
| − | | + | |
| − | The Mercurial repository lives on the hosted server. Access it by logging into hosted1 Then follow these steps:
| + | |
| − | | + | |
| − | <pre>
| + | |
| − | $ cd /hg
| + | |
| − | $ sudo hg clone -U $OLDURL $PROJECTNAME (or sudo mkdir $PROJECTNAME; cd $PROJECTNAME; sudo hg init)
| + | |
| − | $ sudo find $PROJECTNAME -type d -exec chmod g+s \{\} \;
| + | |
| − | $ sudo chmod -R g+w $PROJECTNAME
| + | |
| − | $ sudo chown -R root:$PROJECTGROUP $PROJECTNAME
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | This should setup all the files needed for the repository.
| + | |
| − | | + | |
| − | === Commit Mail ===
| + | |
| − | | + | |
| − | The Mercurial [http://www.selenic.com/mercurial/wiki/index.cgi/NotifyExtension Notify extension] can be used to send out email when commits are pushed to a Mecurial repository. To enable notifications, create the file ''/hg/$PROJECTNAME/.hg/hgrc'':
| + | |
| − | | + | |
| − | <pre>
| + | |
| − | [extensions]
| + | |
| − | hgext.notify =
| + | |
| − | | + | |
| − | [hooks]
| + | |
| − | changegroup.notify = python:hgext.notify.hook
| + | |
| − | | + | |
| − | [email]
| + | |
| − | from = admin@fedoraproject.org
| + | |
| − | | + | |
| − | [smtp]
| + | |
| − | host = localhost
| + | |
| − | | + | |
| − | [web]
| + | |
| − | baseurl = http://hg.fedoraproject.org/hg
| + | |
| − | | + | |
| − | [notify]
| + | |
| − | sources = serve push pull bundle
| + | |
| − | test = False
| + | |
| − | config = /hg/$PROJECTNAME/.hg/subscriptions
| + | |
| − | maxdiff = -1
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | And the file ''/hg/$PROJECTNAME/.hg/subscriptions'':
| + | |
| − | <pre>
| + | |
| − | [usersubs]
| + | |
| − | | + | |
| − | user@host = *
| + | |
| − | | + | |
| − | [reposubs]
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | == Git Repository ==
| + | |
| − | You'll need to know several things in order to start the git repository.
| + | |
| − | # PROJECTNAME -- what the project wants to be called.
| + | |
| − | # OLDURL -- how to access the project's current source code in their git repository.
| + | |
| − | # PROJECTGROUP -- the group setup in the account system for write access to the repository.
| + | |
| − | # COMMITLIST -- comma-separated list of email addresses for commits (optional)
| + | |
| − | # DESCRIPTION -- description of the project (optional)
| + | |
| − | # PROJECTOWNER -- the FAS username of the project owner
| + | |
| − | | + | |
| − | The git repository lives on the hosted server. Access it by logging into hosted1 Then follow these steps:
| + | |
| − | | + | |
| − | <pre>
| + | |
| − | $ cd /git
| + | |
| − | | + | |
| − | $ # Clone an existing repository:
| + | |
| − | $ sudo git clone --bare $OLDURL $PROJECTNAME.git
| + | |
| − | $ sudo git --git-dir $PROJECTNAME.git config core.sharedRepository true
| + | |
| − | $ #
| + | |
| − | $ ## or
| + | |
| − | $ #
| + | |
| − | $ # Create a new repository:
| + | |
| − | $ sudo mkdir $PROJECTNAME.git
| + | |
| − | $ sudo git --git-dir=$PROJECTNAME.git --bare init --shared=true
| + | |
| − | | + | |
| − | $ # Give the repository a nice description for gitweb
| + | |
| − | $ echo $DESCRIPTION | sudo tee description > /dev/null
| + | |
| − | | + | |
| − | $ # Setup and run post-update hook.
| + | |
| − | $ # (We symlink this because /git is on a filesystem with noexec set)
| + | |
| − | $ sudo ln -svf $(git --exec-path)/git-update-server-info $PROJECTNAME.git/hooks/post-update
| + | |
| − | $ sudo git --git-dir=$PROJECTNAME.git update-server-info
| + | |
| − | | + | |
| − | $ # Ensure ownership and modes are correct
| + | |
| − | $ sudo find $PROJECTNAME.git -type d -exec chmod g+s \{\} \;
| + | |
| − | $ sudo find $PROJECTNAME.git -perm /u+w -a ! -perm /g+w -exec chmod g+w \{\} \;
| + | |
| − | $ sudo chown -R $PROJECTOWNER:$PROJECTGROUP $PROJECTNAME.git
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | This should setup all the files needed for the repository. The repository owner can push changes into the repo by running:
| + | |
| − | <pre>
| + | |
| − | $ git push ssh://git.fedorahosted.org/git/$PROJECTNAME.git/ master
| + | |
| − | </pre>
| + | |
| − | from within their local git repository.
| + | |
| − | | + | |
| − | === Commit Mail ===
| + | |
| − | If they want commit mail, then there are a couple of additional steps.
| + | |
| − | <pre>
| + | |
| − | $ echo $COMMITLIST | sudo tee commit-list > /dev/null
| + | |
| − | $ sudo ln -svf /usr/bin/fedora-git-commit-mail-hook hooks/update
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | == Bazaar Repository ==
| + | |
| − | You'll need to know three things in order to start a bazaar repository.
| + | |
| − | # PROJECTNAME -- what the project wants to be called.
| + | |
| − | # OLDBRANCHURL -- how to access the project's current sourcecode in their previous bazaar repository. Note that a project may have multiple branches that they want to import. Each branch will have a separate URL. (The project can import the new branches after the repository is created if they want.)
| + | |
| − | # PROJECTGROUP -- the group setup in the account system for readwrite access to the repository.
| + | |
| − | | + | |
| − | The bzr repository lives on the hosted server. Access it by logging into hosted1 then follow these steps:
| + | |
| − | | + | |
| − | The first stage is to create the Bazaar repository.
| + | |
| − | <pre>
| + | |
| − | $ cd /srv/bzr/
| + | |
| − | $ # This creates a Bazaar repository which has shared storage between branches
| + | |
| − | $ sudo bzr init-repo $PROJECTNAME --no-trees
| + | |
| − | $ cd $PROJECTNAME
| + | |
| − | $ sudo bzr branch $OLDURL
| + | |
| − | $ sudo bzr branch $OLDURL2
| + | |
| − | $ # [...]
| + | |
| − | $ sudo bzr branch $OLDURLN
| + | |
| − | $ cd ..
| + | |
| − | $ sudo find $PROJECTNAME -type d -exec chmod g+s \{\} \;
| + | |
| − | $ sudo chmod -R g+w $PROJECTNAME
| + | |
| − | $ sudo chown -R root:$PROJECTGROUP $PROJECTNAME
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | This should be all that is needed. To checkout run:
| + | |
| − | <pre>
| + | |
| − | bzr init-repo $MYLOCALPROJECTREPO
| + | |
| − | cd $MYLOCALPROJECTREPO
| + | |
| − | bzr branch bzr+ssh://bzr.fedorahosted.org/bzr/$PROJECTNAME/$BRANCHNAME
| + | |
| − | bzr branch bzr://bzr.fedorahosted.org/bzr/$PROJECTNAME/$BRANCHNAME/
| + | |
| − | </pre>
| + | |
| − | Note: If the end user checks out a branch without creating their own repository they will need to create a local working tree by doing the following:
| + | |
| − | <pre>
| + | |
| − | cd $BRANCHNAME
| + | |
| − | bzr checkout --lightweight
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | == SVN Repository ==
| + | |
| − | You'll need to know two things in order to start a svn repository.
| + | |
| − | # PROJECTNAME -- what the project wants to be called.
| + | |
| − | # PROJECTGROUP -- The Fedora account system group with read-write access.
| + | |
| − | | + | |
| − | SVN lives on the hosted server. Access it by logging into hosted1. Then run the following steps:
| + | |
| − | | + | |
| − | <pre>
| + | |
| − | $ cd /svn/
| + | |
| − | $ sudo svnadmin create $PROJECTNAME
| + | |
| − | $ sudo chgrp -R $GROUPNAME $PROJECTNAME
| + | |
| − | $ sudo chmod -R g+w $PROJECTNAME
| + | |
| − | $ find $PROJECTNAME -type d | sudo xargs chmod g+s
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | This should be all that is needed. To checkout run:
| + | |
| − | <pre>
| + | |
| − | svn co svn+ssh://svn.fedorahosted.org/svn/$PROJECTNAME
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | | + | |
| − | == Monotone Repository *UNFINISHED DRAFT* ==
| + | |
| − | You'll need to know these things in order to start the Monotone repository:
| + | |
| − | # PROJECTNAME -- what the project wants to be called.
| + | |
| − | # PROJECTGROUP -- the group setup in the account system for write access to the repository.
| + | |
| − | | + | |
| − | The Monotone repository lives on the hosted server.
| + | |
| − | Access it by logging into hosted1.
| + | |
| − | Then follow these steps:
| + | |
| − | | + | |
| − | <pre>
| + | |
| − | $ cd /mtn/
| + | |
| − | $ sudo mkdir -m a=rx,g+ws,u+w $PROJECTNAME
| + | |
| − | $ sudo mtn --db $PROJECTNAME/db.mtn db init
| + | |
| − | $ sudo chgrp -R $PROJECTGROUP $PROJECTNAME
| + | |
| − | $ sudo chmod -R g+w $PROJECTNAME
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | This should be all that is needed. Now you have an empty database.
| + | |
| − | Anyone in the $PROJECTGROUP group can populate it using:
| + | |
| − | <pre>
| + | |
| − | mtn sync ssh://mtn.fedorahosted.org/mtn/hosted/$PROJECTNAME/db.mtn
| + | |
| − | </pre>
| + | |
| | | | |
| | [[Category:Infrastructure]] [[Category:Hosted Projects]] | | [[Category:Infrastructure]] [[Category:Hosted Projects]] |
For changes, questions or comments, please contact anyone in the Fedora Infrastructure team.