Intro

This is the official process to check out OMP with the PKP library as a sub-module.

Create github.com user

Go to github.com and create a user account. Log in to your user account.

Delete existing personal forks

First you have to delete existing personal forks of omp/pkp-lib if you have cloned these repositories before. You obviously shouldn't do this when there are still changes in there you don't have in other locations!

Add the official repository

The 'official' respositories can be compared to the role that PKP's old CVS repositories used to fill. Adding the official branch allows you to synchronize your code with the rest of the team, and should be pulled from before creating a patch or making a commit.

Execute:

cd lib/pkp/
git remote add official git@github.com:pkp/pkp-lib.git # this only works if you already have write access to the official rep.
git fetch official
cd ../..
git remote add official git@github.com:pkp/omp.git
git fetch official

Now edit .git/config and lib/pkp/.git/config again. Find:

[branch "master"]
remote = origin
merge = refs/heads/master

And change it to:

[branch "master"]
remote = official
merge = refs/heads/master

for both repositories.

Save the files and execute

git pull

for both repositories.

This should give you the output 'Already up-to-date'.

Create development branches

You'll never develop directly on the master branch. We can use the master branch to track released code and tested changes. We need development branches now for actual code changes.

Create development branches in the main project and the sub-module. I'll use the branch "modal" here but this is arbitrary. The branch name should represent the development topic you intend to work on. Also am I assuming here that you want to develop off the master branch. There my be scenarios however where it might be more practical to develop off another developer's branch. In that case you can replace "official/master" by any other remote or local branch you want to base your work on.

Next you edit lib/pkp/.git/config and '.git/config' and insert the following configuration to the end of both files:

[branch "modal"]
remote = origin
merge = refs/heads/modal

You can now (optionally) delete the master branch in your online development repository as you won't probably need it. To do so you'll first have to go to the github website and switch your default branch to the dev branch:

Now you can enter the following commands locally to remove the remote master branch

git push origin :master
cd lib/pkp
git push origin :master
cd ../..

Be very careful to never enter this command with official rather than origin. Otherwise you'll drop the master repository!

Start pulling changes

Now you can start pulling in changes from other people's repositories. The following is just an example. See for yourself what others are working on (or better: ask them) and pull in what you need to get started. To see developers who have forked pkp-lib, visit "PKP-lib watchers". Similar pages exist for all PKP project repositories. These users can be added as remotes to your repository where you can pull their latest changes:

Pulling in changes from others may cause merge conflicts if you are not starting off the same commit point. See 'man git-merge' for more info on how to solve merge conflicts.

If you want to see another developer's code without merging it into your branch (e.g. because you just want to have a look at it or test it without developing off it), you'll want to pull their branch into its own branch. Use 'git stash' if you have uncommitted changes you want to save. I.e. execute: