From 2df21b78b98dcfcb1fd36e15b76e78cc2d8587a0 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Fri, 31 Aug 2018 09:32:59 -0400 Subject: [PATCH 1/2] docs: Add some examples to fetchGit --- doc/manual/expressions/builtins.xml | 89 ++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml index 07d8357b4..6f3c4e3d0 100644 --- a/doc/manual/expressions/builtins.xml +++ b/doc/manual/expressions/builtins.xml @@ -398,6 +398,91 @@ stdenv.mkDerivation { … } + + + Fetching a private repository over SSH + builtins.fetchGit { + url = "ssh://git@github.com/my-secret/repository.git"; + ref = "master"; + rev = "adab8b916a45068c044658c4158d81878f9ed1c3"; +} + + + Note the URL format is not the same as git + clone. builtins.fetchGit uses + a / instead of a : + between github.com and + my-secret. + + + + Fetching a repository's specific commit on an arbitrary branch + + 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 ref attribute. + + + 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 ref attribute as well. + + builtins.fetchGit { + url = "https://github.com/nixos/nix.git"; + rev = "841fcbd04755c7a2865c51c1e2d3b045976b7452"; + ref = "1.11-maintenance"; +} + + + 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. + + + + + + Fetching a repository's specific commit on the default branch + + If the revision you're looking for is in the default branch + of the gift repository you may omit the + ref attribute. + + builtins.fetchGit { + url = "https://github.com/nixos/nix.git"; + rev = "841fcbd04755c7a2865c51c1e2d3b045976b7452"; +} + + + + Fetching a tag + builtins.fetchGit { + url = "https://github.com/nixos/nix.git"; + ref = "tags/1.9"; +} + Due to a bug (#2385), + only non-annotated tags can be fetched. + + + + Fetching the latest version of a remote branch + + builtins.fetchGit can behave impurely + fetch the latest version of a remote branch. + + Nix will refetch the branch in accordance to + . + This behavior is disabled in + Pure evaluation mode. + builtins.fetchGit { + url = "ssh://git@github.com/nixos/nix.git"; + ref = "master"; +} + @@ -1244,8 +1329,8 @@ in foo This is not allowed because it would cause a cyclic dependency in the computation of the cryptographic hashes for foo and bar. - It is also not possible to reference the result of a derivation. - If you are using Nixpkgs, the writeTextFile function is able to + It is also not possible to reference the result of a derivation. + If you are using Nixpkgs, the writeTextFile function is able to do that. From 0b7568fb730439a2fbbf3c4b3b222319faa7e66a Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Fri, 31 Aug 2018 19:49:56 -0400 Subject: [PATCH 2/2] Drop ssh://... as a required formatting for builtins.fetchGit --- doc/manual/expressions/builtins.xml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml index 6f3c4e3d0..873f30b06 100644 --- a/doc/manual/expressions/builtins.xml +++ b/doc/manual/expressions/builtins.xml @@ -402,17 +402,10 @@ stdenv.mkDerivation { … } Fetching a private repository over SSH builtins.fetchGit { - url = "ssh://git@github.com/my-secret/repository.git"; + url = "git@github.com:my-secret/repository.git"; ref = "master"; rev = "adab8b916a45068c044658c4158d81878f9ed1c3"; } - - - Note the URL format is not the same as git - clone. builtins.fetchGit uses - a / instead of a : - between github.com and - my-secret.