Documentation / git-remote-helpers.txton commit Documentation: git gc packs refs by default now (2e294cf)
   1git-remote-helpers(1)
   2=====================
   3
   4NAME
   5----
   6git-remote-helpers - Helper programs for interoperation with remote git
   7
   8SYNOPSIS
   9--------
  10'git remote-<transport>' <remote>
  11
  12DESCRIPTION
  13-----------
  14
  15These programs are normally not used directly by end users, but are
  16invoked by various git programs that interact with remote repositories
  17when the repository they would operate on will be accessed using
  18transport code not linked into the main git binary. Various particular
  19helper programs will behave as documented here.
  20
  21COMMANDS
  22--------
  23
  24Commands are given by the caller on the helper's standard input, one per line.
  25
  26'capabilities'::
  27        Lists the capabilities of the helper, one per line, ending
  28        with a blank line.
  29
  30'list'::
  31        Lists the refs, one per line, in the format "<value> <name>
  32        [<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
  33        a symref, or "?" to indicate that the helper could not get the
  34        value of the ref. A space-separated list of attributes follows
  35        the name; unrecognized attributes are ignored. After the
  36        complete list, outputs a blank line.
  37+
  38If 'push' is supported this may be called as 'list for-push'
  39to obtain the current refs prior to sending one or more 'push'
  40commands to the helper.
  41
  42'option' <name> <value>::
  43        Set the transport helper option <name> to <value>.  Outputs a
  44        single line containing one of 'ok' (option successfully set),
  45        'unsupported' (option not recognized) or 'error <msg>'
  46        (option <name> is supported but <value> is not correct
  47        for it).  Options should be set before other commands,
  48        and may how those commands behave.
  49+
  50Supported if the helper has the "option" capability.
  51
  52'fetch' <sha1> <name>::
  53        Fetches the given object, writing the necessary objects
  54        to the database.  Fetch commands are sent in a batch, one
  55        per line, and the batch is terminated with a blank line.
  56        Outputs a single blank line when all fetch commands in the
  57        same batch are complete. Only objects which were reported
  58        in the ref list with a sha1 may be fetched this way.
  59+
  60Optionally may output a 'lock <file>' line indicating a file under
  61GIT_DIR/objects/pack which is keeping a pack until refs can be
  62suitably updated.
  63+
  64Supported if the helper has the "fetch" capability.
  65
  66'push' +<src>:<dst>::
  67        Pushes the given <src> commit or branch locally to the
  68        remote branch described by <dst>.  A batch sequence of
  69        one or more push commands is terminated with a blank line.
  70+
  71Zero or more protocol options may be entered after the last 'push'
  72command, before the batch's terminating blank line.
  73+
  74When the push is complete, outputs one or more 'ok <dst>' or
  75'error <dst> <why>?' lines to indicate success or failure of
  76each pushed ref.  The status report output is terminated by
  77a blank line.  The option field <why> may be quoted in a C
  78style string if it contains an LF.
  79+
  80Supported if the helper has the "push" capability.
  81
  82'import' <name>::
  83        Produces a fast-import stream which imports the current value
  84        of the named ref. It may additionally import other refs as
  85        needed to construct the history efficiently. The script writes
  86        to a helper-specific private namespace. The value of the named
  87        ref should be written to a location in this namespace derived
  88        by applying the refspecs from the "refspec" capability to the
  89        name of the ref.
  90+
  91Supported if the helper has the "import" capability.
  92
  93If a fatal error occurs, the program writes the error message to
  94stderr and exits. The caller should expect that a suitable error
  95message has been printed if the child closes the connection without
  96completing a valid response for the current command.
  97
  98Additional commands may be supported, as may be determined from
  99capabilities reported by the helper.
 100
 101CAPABILITIES
 102------------
 103
 104'fetch'::
 105        This helper supports the 'fetch' command.
 106
 107'option'::
 108        This helper supports the option command.
 109
 110'push'::
 111        This helper supports the 'push' command.
 112
 113'import'::
 114        This helper supports the 'import' command.
 115
 116'refspec' 'spec'::
 117        When using the import command, expect the source ref to have
 118        been written to the destination ref. The earliest applicable
 119        refspec takes precedence. For example
 120        "refs/heads/*:refs/svn/origin/branches/*" means that, after an
 121        "import refs/heads/name", the script has written to
 122        refs/svn/origin/branches/name. If this capability is used at
 123        all, it must cover all refs reported by the list command; if
 124        it is not used, it is effectively "*:*"
 125
 126REF LIST ATTRIBUTES
 127-------------------
 128
 129'for-push'::
 130        The caller wants to use the ref list to prepare push
 131        commands.  A helper might chose to acquire the ref list by
 132        opening a different type of connection to the destination.
 133
 134'unchanged'::
 135        This ref is unchanged since the last import or fetch, although
 136        the helper cannot necessarily determine what value that produced.
 137
 138OPTIONS
 139-------
 140'option verbosity' <N>::
 141        Change the level of messages displayed by the helper.
 142        When N is 0 the end-user has asked the process to be
 143        quiet, and the helper should produce only error output.
 144        N of 1 is the default level of verbosity, higher values
 145        of N correspond to the number of -v flags passed on the
 146        command line.
 147
 148'option progress' \{'true'|'false'\}::
 149        Enable (or disable) progress messages displayed by the
 150        transport helper during a command.
 151
 152'option depth' <depth>::
 153        Deepen the history of a shallow repository.
 154
 155'option followtags' \{'true'|'false'\}::
 156        If enabled the helper should automatically fetch annotated
 157        tag objects if the object the tag points at was transferred
 158        during the fetch command.  If the tag is not fetched by
 159        the helper a second fetch command will usually be sent to
 160        ask for the tag specifically.  Some helpers may be able to
 161        use this option to avoid a second network connection.
 162
 163'option dry-run' \{'true'|'false'\}:
 164        If true, pretend the operation completed successfully,
 165        but don't actually change any repository data.  For most
 166        helpers this only applies to the 'push', if supported.
 167
 168Documentation
 169-------------
 170Documentation by Daniel Barkalow.
 171
 172GIT
 173---
 174Part of the linkgit:git[1] suite