# Overview

The document outlines a best practices for developing custom software
withing GIT.  To be most efficient you should learn several
development tools.

## Build and dependency management: Maven

Maven is used as the project build software.  See: [Maven](/maven.html)
for tips on how to use it.

## Version Control System: GIT

GIT is the Distributed VCS that we use.  See: [GIT](/git.html) for more info.


# Global IT custom project development methodology

1. Role - Project Developer: Agree on a project folder name with the
GIT administrator.  You send them your suggestion, and as long as it's
not taken, you should be able to proceed with it.  They'll setup a
repo for you to upload into.

2. Role - Project Developer: Create the project you want with
[Maven](/maven.html#createProject)

3. Role - Git Administrator: Make sure that you allow the project to
be added to the [GIT repository](/training/git.html#addingProjects)

4. Role - Project Developer: Get [git](/training/git.html#initialize)
setup for your project.

4. Role - Project Developer: Next setup your pom.xml so the project
will be reasonable.  The best advice is to look at an existing pom.xml
to figure out what to do.

5. Role - Project Developer: Setup [distribution
management](/maven.html#distributionManagement).

7. Role - Project Developer: Code and [release](/maven.html#release) a version of your artifact.


# Advice on how to collaborate with someone

It's important to share code via a VCS, and GIT is arguably the best
one around at the moment.  Often you are a windows user (developer).
See [Using Git on Windows](/git.html#usinggitonwindows) 

## Sharing your code

Once you have these, you'll need to have a repository setup for you,
ask the git admin to do this for you.  Lets say your code is contained
in a folder called: 

    myProject

Then ask the git repo admin to create a git repo by that name.

1. cd in cygwin bash shell to that folder and do the steps to
initialize a project specified [here](/training/git.html#initialize).

The pieces of information you need are: repo connect string and repo
name.

        git@linux1.hk.oracle.com:myProject.git
        [----connect string----] [-Repo Name-]

So the steps above have let you push your repo up into the server.

<a name="getCode"></a>

## Getting other peoples code

Sometimes you'll want to pull down a repo, normally this is done with
a command like:

    git clone git@linux1.hk.oracle.com:crmod-ws-wrapper.git

Here the connect string is: git@linux1.hk.oracle.com, and the repo
name is crmod-ws-wrapper.git.  A developer may ask you to download a
repo so you can look at it and see how he does something.
