<refentry id="man.gbp.pull">
  <refentryinfo>
    <address>
      &dhemail;
    </address>
    <author>
      &dhfirstname;
      &dhsurname;
    </author>
  </refentryinfo>
  <refmeta>
   <refentrytitle>gbp-pull</refentrytitle>
    &dhsection;
  </refmeta>
  <refnamediv>
    <refname>gbp-pull</refname>

    <refpurpose>Safely update a repository from remote</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <cmdsynopsis>
      &gbp-pull;

      &man.common.options.synopsis;
      <arg><option>--force</option></arg>
      <arg><option>--all</option></arg>
      <arg><option>--redo-pq</option></arg>
      <arg><option>--[no-]pristine-tar</option></arg>
      <arg><option>--ignore-branch</option></arg>
      <arg><option>--debian-branch=</option><replaceable>branch_name</replaceable></arg>
      <arg><option>--upstream-branch=</option><replaceable>branch_name</replaceable></arg>
      <arg><option>--track-missing</option></arg>
      <arg><option>--depth=</option><replaceable>depth</replaceable></arg>
      <arg><replaceable>repository</replaceable></arg>
    </cmdsynopsis>
  </refsynopsisdiv>
  <refsect1>
    <title>DESCRIPTION</title>
    <para>
    &gbp-pull; updates the <emphasis>debian</emphasis>,
    <emphasis>upstream</emphasis> and <emphasis>pristine-tar</emphasis>
    branches from remote repositories in one go. It checks if the update is safe (would
    result in a <emphasis>fast-forward</emphasis> merge) and aborts otherwise.
    </para>
    <para>
      If given on the command line the changes are fetched from the
      given repository otherwise the default
      for <replaceable>repository</replaceable> is read from
      the <replaceable>remote</replaceable> configuration for each
      branch (in git's configuration).
    </para>
  </refsect1>
  <refsect1>
    <title>OPTIONS</title>

    <variablelist>
      &man.common.options.description;

      <varlistentry>
        <term><option>--force</option></term>
        <listitem>
	  <para>Force a branch update even if this results in a non fast
	  forward update. <warning><para>Forcing a branch update
	  makes you lose your modifications.</para></warning></para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--all</option></term>
        <listitem>
	  <para>Update all remote-tracking branches that have identical name in the
            remote repository.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--redo-pq</option></term>
        <listitem>
	  <para>Also rebuild the corresponding patch-queue using &gbp-pq;.
	  <warning><para>This drops the patch-queue branch if it exists.</para></warning></para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--ignore-branch</option>
        </term>
        <listitem>
	  <para>Don't care if we're on a branch or in detached head state.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--debian-branch</option>=<replaceable>branch_name</replaceable>
        </term>
        <listitem>
	  <para>The branch in the Git repository the Debian package is being
	  developed on, default is <replaceable>master</replaceable>.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--upstream-branch</option>=<replaceable>branch_name</replaceable>
        </term>
        <listitem>
	  <para>The branch in the &git; repository the upstream sources are put
	  onto. Default is <replaceable>upstream</replaceable>.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
	<term><option>--track-missing</option></term>
        <listitem>
	  <para>
            If a branch is missing in the local repository try to
            fetch it from the remote side and (if it exists) fetch it and set up
            branch tracking for it. This ensures that branches that are added at a
            later point to the remote side (e.g.
            <replaceable>pristine-tar</replaceable>) are picked up automatically.
            Note that it's not an error for the branch to not exist on the remote
            side.
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--depth</option>=<replaceable>depth</replaceable>
        </term>
        <listitem>
          <para>Git history depth, for deepening shallow git clones.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--pristine-tar</option>
        </term>
        <listitem>
          <para>Whether to update the pristine-tar branch too.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
  <refsect1>
    <title>EXIT CODES</title>
    <para>
    When &gbp-pull; finishes, it indicates success or failure with its exit code:
    </para>
    <variablelist>
      <varlistentry>
        <term><option>0</option></term>
        <listitem>
	  <para>Success.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>1</option></term>
        <listitem>
	  <para>An error occurred during the pull, see the printed error message for details.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>2</option></term>
        <listitem>
	  <para>At least one branch couldn't be fast forwarded.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
  <refsect1>
      &man.gbp.config-files;
  </refsect1>
  <refsect1>
    <title>SEE ALSO</title>
    <para>
      <xref linkend="man.gbp.buildpackage"/>,
      <xref linkend="man.gbp.clone"/>,
      <xref linkend="man.gbp.pq"/>,
      <xref linkend="man.gbp.conf"/>
    </para>
  </refsect1>
  <refsect1>
    <title>AUTHOR</title>

    <para>&dhusername; &dhemail;</para>

  </refsect1>
</refentry>
