GRASS GIS Development Subversion repository

##########################################################
How to get write access here?

Write access is only granted to developers who agree to abide by
RFC2 - Legal aspects of code contributions
 http://trac.osgeo.org/grass/wiki/RFC/2_LegalAspectsOfCodeContributions
and the code submission guidelines
 http://trac.osgeo.org/grass/wiki/Submitting

This needs to be communicated to a GRASS developer. S/he will 
then possibly propose you to the GRASS Project Steering committee
after a period of evaluation. For details, see
 http://trac.osgeo.org/grass/wiki/RFC

Once write access is granted, you, the new developer need to
obtain an "osgeo_id" at http://www.osgeo.org/osgeo_userid
If you already have an "osgeo_id" but forgot it, search for it at
Search at http://www.osgeo.org/cgi-bin/ldap_web_search.py

##########################################################
How to compile GRASS:
   See INSTALL file.

Yes, you should really read INSTALL.

##########################################################################
How to generate the 'Programmer's Manual':

This needs doxygen (http://www.doxygen.org) and optionally
Graphviz dot (http://www.research.att.com/sw/tools/graphviz/).

To build the GRASS programmer's documentation, run
   make htmldocs
or to generate documentation as single html file (recommended for simple reading)
   make htmldocs-single
here. This takes quite some time. The result is in lib/html/index.html
which refers to further document repositories in
   lib/vector/html/index.html
   lib/db/html/index.html
   lib/gis/html/index.html

The master file is: ./grasslib.dox where all sub-documents have to
be linked into.

To generate the documents in PDF format, run
   make pdfdocs

An online version is available at:
https://grass.osgeo.org/programming7/

## Docker

Build using the downloaded source code (in the directory with the
source code):

    docker build -t grassgis77 .

A test run (assuming you have existing GRASS GIS location; it can be downloaded from
https://grass.osgeo.org/sampledata/north_carolina/nc_basic_spm_grass7.zip)

    # case 1: launching in the grassdata directory in which the location is stored:
    docker run -it --rm --user=$(id -u):$(id -g) --volume $(pwd):/data --env HOME=/data/ grassgis77 \
        grass --text nc_spm_08_grass7/user1 --exec g.region -p

    # case 2: launching anywhere
    docker run -it --rm --user=$(id -u):$(id -g) --volume /your/test/grassdata/:/data --env HOME=/data/ grassgis77 \
        grass /data/nc_basic_spm/PERMANENT --exec g.region -p

Note that the first `grassgis77` is the name of the image while the second
`grass` is the name of the executable.

To run the tests (again assuming local location):

    docker run -it --rm --user=$(id -u):$(id -g) --volume /your/test/grassdata/:/data --env HOME=/data/ -w /code/grass \
        grassgis77 grass /data/nc_basic_spm/PERMANENT --exec \
            python -m grass.gunittest.main \
                --location nc_basic_spm --location-type nc

Note: If you compiled locally before building the Docker image, you may
encounter problems as the local configuration and locally compiled file
are copied to and used in the Docker image. To make sure you don't have
this issue, clean all the compiled files from the source code:

    make distclean
