# Configuration Files

The configuration files are parsed in this order:

/etc/git-buildpackage/gbp.conf

- system wide configuration

~/.gbp.conf

- per user configuration

.gbp.conf

- per repository/branch configuration (deprecated)

debian/gbp.conf

- per repository/branch configuration

.git/gbp.conf

- per (local) repository configuration

All have the same format. They consist of several sections, all of them are optional:

[DEFAULT]

- Options in this section apply to all &gbp; commands.

[buildpackage]

- Options in this section apply to &gbp-buildpackage; only and override options from the [DEFAULT] section.

[import-orig]

- Options in this section apply to &gbp-import-orig; only and override options from the [DEFAULT] section.

[import-dsc]

- Options in this section apply to &gbp-import-dsc; only and override options from the [DEFAULT] section.

[dch]

- Options in this section apply to &gbp-dch; only and override options from the [DEFAULT] section.

...

- Same for the other &gbp; commands

The actual options in these sections are the command line options without the '--' prefix. So `--upstream-branch=``dfsgfree` would read:

        upstream-branch=dfsgfree

in the config file. In the special case of &gbp-buildpackage;, the stripped prefix is not '--' but '--git-'. Here's a more complete example:

        [DEFAULT]
        # the default build command
        builder=debuild -i\.git -I.git
        # the default branch for upstream sources
        upstream-branch=upstream
        # the default branch for the debian patch
        debian-branch=master

        [buildpackage]
        upstream-branch=dfsgclean
        # Sign tags with GPG:
        sign-tags = True
        # Keyid to sign tags with
        #keyid = 0xdeadbeef

        [import-orig]
        upstream-branch=notdfsgclean

        [import-dsc]
        upstream-branch=notdfsgclean

        [dch]
        git-log=--no-merges

For more details, see the man.gbp.conf manual page.

## Overriding Parsing Order

The environment variable `GBP_CONF_FILES` can be used to override the order in which configuration files are parsed. The following example parses two configuration files in the users home directory (`~/.gbp.conf` and `~/.gbp.late.conf`) and in the debian directory (`debian/gbp.conf`). The file are parsed from left to right. Since `~/.gbp.late.conf` is at the very end of the list it can be used to override configuration entries shipped by the package. This can be useful if packages set e.g. `export-dir` or `tarball-dir` and you perfer different locations:

    	$ cat <<EOF >~/.gbp.late.conf
    	[DEFAULT]
    	export-dir = ../build-area
    	tarball-dir = ../tarballs
    	EOF

    	$ export GBP_CONF_FILES=~/.gbp.conf:debian/gbp.conf:~/.gbp.late.conf
    	$ cd  <mypkg>
    	$ gbp config buildpackage.export-dir
    	../build-area

If you want all configuration files to be skipped, set `GBP_CONF_FILES` to a non existing location. This way only default values and options from the command line will be used:

    	$ export GBP_CONFI_FILES=/does/not/exist
    	$ gbp config buildpackage.debian-branch
    	master