aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/expressions
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2018-09-01 14:08:32 +0200
committerGitHub <noreply@github.com>2018-09-01 14:08:32 +0200
commit6ed4a6bd0e080d0dab2544a27400744011891c6c (patch)
tree2d912982fb80fb1056385366fe90bebdea93c6e1 /doc/manual/expressions
parent254ed7f9f31a069fd38e45e3163819c127d808f5 (diff)
parent0b7568fb730439a2fbbf3c4b3b222319faa7e66a (diff)
Merge pull request #2384 from graham-at-target/fetch-git-examples
docs: Add some examples to fetchGit
Diffstat (limited to 'doc/manual/expressions')
-rw-r--r--doc/manual/expressions/builtins.xml82
1 files changed, 80 insertions, 2 deletions
diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml
index 07d8357b4..873f30b06 100644
--- a/doc/manual/expressions/builtins.xml
+++ b/doc/manual/expressions/builtins.xml
@@ -398,6 +398,84 @@ stdenv.mkDerivation { … }
</listitem>
</varlistentry>
</variablelist>
+
+ <example>
+ <title>Fetching a private repository over SSH</title>
+ <programlisting>builtins.fetchGit {
+ url = "git@github.com:my-secret/repository.git";
+ ref = "master";
+ rev = "adab8b916a45068c044658c4158d81878f9ed1c3";
+}</programlisting>
+ </example>
+
+ <example>
+ <title>Fetching a repository's specific commit on an arbitrary branch</title>
+ <para>
+ If the revision you're looking for is in the default branch
+ of the gift repository you don't strictly need to specify
+ the branch name in the <varname>ref</varname> attribute.
+ </para>
+ <para>
+ However, if the revision you're looking for is in a future
+ branch for the non-default branch you will need to specify
+ the the <varname>ref</varname> attribute as well.
+ </para>
+ <programlisting>builtins.fetchGit {
+ url = "https://github.com/nixos/nix.git";
+ rev = "841fcbd04755c7a2865c51c1e2d3b045976b7452";
+ ref = "1.11-maintenance";
+}</programlisting>
+ <note>
+ <para>
+ It is nice to always specify the branch which a revision
+ belongs to. Without the branch being specified, the
+ fetcher might fail if the default branch changes.
+ Additionally, it can be confusing to try a commit from a
+ non-default branch and see the fetch fail. If the branch
+ is specified the fault is much more obvious.
+ </para>
+ </note>
+ </example>
+
+ <example>
+ <title>Fetching a repository's specific commit on the default branch</title>
+ <para>
+ If the revision you're looking for is in the default branch
+ of the gift repository you may omit the
+ <varname>ref</varname> attribute.
+ </para>
+ <programlisting>builtins.fetchGit {
+ url = "https://github.com/nixos/nix.git";
+ rev = "841fcbd04755c7a2865c51c1e2d3b045976b7452";
+}</programlisting>
+ </example>
+
+ <example>
+ <title>Fetching a tag</title>
+ <programlisting>builtins.fetchGit {
+ url = "https://github.com/nixos/nix.git";
+ ref = "tags/1.9";
+}</programlisting>
+ <note><para>Due to a bug (<link
+ xlink:href="https://github.com/NixOS/nix/issues/2385">#2385</link>),
+ only non-annotated tags can be fetched.</para></note>
+ </example>
+
+ <example>
+ <title>Fetching the latest version of a remote branch</title>
+ <para>
+ <function>builtins.fetchGit</function> can behave impurely
+ fetch the latest version of a remote branch.
+ </para>
+ <note><para>Nix will refetch the branch in accordance to
+ <option>tarball-ttl</option>.</para></note>
+ <note><para>This behavior is disabled in
+ <emphasis>Pure evaluation mode</emphasis>.</para></note>
+ <programlisting>builtins.fetchGit {
+ url = "ssh://git@github.com/nixos/nix.git";
+ ref = "master";
+}</programlisting>
+ </example>
</listitem>
</varlistentry>
@@ -1244,8 +1322,8 @@ in foo</programlisting>
This is not allowed because it would cause a cyclic dependency in
the computation of the cryptographic hashes for
<varname>foo</varname> and <varname>bar</varname>.</para>
- <para>It is also not possible to reference the result of a derivation.
- If you are using Nixpkgs, the <literal>writeTextFile</literal> function is able to
+ <para>It is also not possible to reference the result of a derivation.
+ If you are using Nixpkgs, the <literal>writeTextFile</literal> function is able to
do that.</para></listitem>
</varlistentry>