<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/tests/git.scm, branch master</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>tests: git: Avoid duplicated helper code.</title>
<updated>2026-07-06T10:00:49+00:00</updated>
<author>
<name>Simon Tournier</name>
<email>zimon.toutoune@gmail.com</email>
</author>
<published>2026-07-03T11:27:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=f729199e7b7f8933ee73ac7cb7a234e62beef025'/>
<id>f729199e7b7f8933ee73ac7cb7a234e62beef025</id>
<content type='text'>
* tests/git.scm (git): New procedure.
("update-cached-checkout, tag",
"update-cached-checkout, recursive submodules follow ref",
"update-cached-checkout, symref tag",
"update-cached-checkout, symref pull-request"): Use it.

Change-Id: I85aa14e729be1efe691418e74e37d6ae1fd3e633
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* tests/git.scm (git): New procedure.
("update-cached-checkout, tag",
"update-cached-checkout, recursive submodules follow ref",
"update-cached-checkout, symref tag",
"update-cached-checkout, symref pull-request"): Use it.

Change-Id: I85aa14e729be1efe691418e74e37d6ae1fd3e633
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: git: Avoid nested checks for submodules.</title>
<updated>2026-07-06T10:00:25+00:00</updated>
<author>
<name>Simon Tournier</name>
<email>zimon.toutoune@gmail.com</email>
</author>
<published>2026-07-03T11:04:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=1178100657fba8f4b1ff23d7752c9d9b13c7d938'/>
<id>1178100657fba8f4b1ff23d7752c9d9b13c7d938</id>
<content type='text'>
Follow up of 8d27b1158de3cc1823d33847cb722722c769a27e discussed in #9231.

* tests/git.scm ("update-cached-checkout, recursive submodules follow ref"):
Replace the nested 'let' by 'let*'.

Merges: #9683
Change-Id: Ibd212bbd2b6fbf02f6fcae0ecb21922686b5f8bc
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Follow up of 8d27b1158de3cc1823d33847cb722722c769a27e discussed in #9231.

* tests/git.scm ("update-cached-checkout, recursive submodules follow ref"):
Replace the nested 'let' by 'let*'.

Merges: #9683
Change-Id: Ibd212bbd2b6fbf02f6fcae0ecb21922686b5f8bc
</pre>
</div>
</content>
</entry>
<entry>
<title>git: Update submodules after switching cached checkout.</title>
<updated>2026-07-02T17:17:18+00:00</updated>
<author>
<name>Phillip Davis</name>
<email>phdavis1027@gmail.com</email>
</author>
<published>2026-06-10T19:36:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=8d27b1158de3cc1823d33847cb722722c769a27e'/>
<id>8d27b1158de3cc1823d33847cb722722c769a27e</id>
<content type='text'>
Previously, update-cached-checkout updated submodules before switching the
cached parent checkout to the requested ref.  A second recursive update could
therefore update submodules according to the previously checked-out parent
tree, then reset the parent to a ref whose gitlinks name different submodule
commits, leaving submodule worktrees stale.

* guix/git.scm (update-cached-checkout): Update submodules after switching to the requested ref.
* tests/git.scm ("update-cached-checkout, recursive submodules follow ref"): New test.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Fixes: guix/guix#7741
Merges: #9231
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, update-cached-checkout updated submodules before switching the
cached parent checkout to the requested ref.  A second recursive update could
therefore update submodules according to the previously checked-out parent
tree, then reset the parent to a ref whose gitlinks name different submodule
commits, leaving submodule worktrees stale.

* guix/git.scm (update-cached-checkout): Update submodules after switching to the requested ref.
* tests/git.scm ("update-cached-checkout, recursive submodules follow ref"): New test.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Fixes: guix/guix#7741
Merges: #9231
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: git: Improve Git tag check.</title>
<updated>2026-06-30T10:08:09+00:00</updated>
<author>
<name>Simon Tournier</name>
<email>zimon.toutoune@gmail.com</email>
</author>
<published>2026-06-13T20:22:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=ba3f2687ca41a30baf572ee3c73e9fa754540859'/>
<id>ba3f2687ca41a30baf572ee3c73e9fa754540859</id>
<content type='text'>
Without running 'checkout' as the last Git directives to one branch that
doesn't own the Git tag, the test is trivial thus poorly relevant.  This
change checks that 'update-cached-checkout' and that the 'cached-directory'
return both the correct Git object identifier matching the upstream Git object
identifier of the Git tag.

* tests/git.scm ("update-cached-checkout, tag"): Switch to 'master' branch and
improve the checks.

Fixes: guix/guix#9340
Merges: guix/guix!9341
Change-Id: I698f94858a4247b8bdcc54758f38f3623890b6af
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without running 'checkout' as the last Git directives to one branch that
doesn't own the Git tag, the test is trivial thus poorly relevant.  This
change checks that 'update-cached-checkout' and that the 'cached-directory'
return both the correct Git object identifier matching the upstream Git object
identifier of the Git tag.

* tests/git.scm ("update-cached-checkout, tag"): Switch to 'master' branch and
improve the checks.

Fixes: guix/guix#9340
Merges: guix/guix!9341
Change-Id: I698f94858a4247b8bdcc54758f38f3623890b6af
</pre>
</div>
</content>
</entry>
<entry>
<title>channels: Support 'symref' branch with commit specification.</title>
<updated>2026-06-25T08:55:17+00:00</updated>
<author>
<name>Simon Tournier</name>
<email>zimon.toutoune@gmail.com</email>
</author>
<published>2026-03-12T15:24:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=7dfab8bbfc9778aa986d3311c0fa04215b4fd3d2'/>
<id>7dfab8bbfc9778aa986d3311c0fa04215b4fd3d2</id>
<content type='text'>
* guix/channels.scm (channel-reference): Allow 'symref' to store both branch
name and specific commit.
* guix/git.scm (resolve-reference, reference-available?): Adjust.
(update-cached-checkout)[ref-&gt;refspecs]: Adjust.
* guix/tests/git.scm (populate-git-repository): Add 'symbolic-ref' directive.
* tests/git.scm (update-cached-checkout, symref tag): Check considering Git
tag as symref.
(update-cached-checkout, symref pull-request): Mimick Pull Request symref and
check it.

Fixes: guix/guix#6910
Merges: guix/guix!7085
Change-Id: I33e2974aefcc15fff24c0df8ab7d24128c7f0046
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/channels.scm (channel-reference): Allow 'symref' to store both branch
name and specific commit.
* guix/git.scm (resolve-reference, reference-available?): Adjust.
(update-cached-checkout)[ref-&gt;refspecs]: Adjust.
* guix/tests/git.scm (populate-git-repository): Add 'symbolic-ref' directive.
* tests/git.scm (update-cached-checkout, symref tag): Check considering Git
tag as symref.
(update-cached-checkout, symref pull-request): Mimick Pull Request symref and
check it.

Fixes: guix/guix#6910
Merges: guix/guix!7085
Change-Id: I33e2974aefcc15fff24c0df8ab7d24128c7f0046
</pre>
</div>
</content>
</entry>
<entry>
<title>git: Remove untracked files from cached checkouts.</title>
<updated>2024-07-18T15:31:19+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2024-07-02T12:52:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=58e268c2e30567f415fa4e02086e49299c31406a'/>
<id>58e268c2e30567f415fa4e02086e49299c31406a</id>
<content type='text'>
Cached checkouts could end up with stale untracked files, for example
because the checkout was interrupted.  As a result, when this happens
for the Guix checkout, users would not get substitutes for ‘guix pull’.

* guix/git.scm (delete-untracked-files): New procedure.
(switch-to-ref): Use it.
* tests/git.scm ("update-cached-checkout, untracked files removed"): New
test.

Co-authored-by: Ricardo Wurmus &lt;rekado@elephly.net&gt;
Change-Id: Iccbe644ade396ad27a037db7e0ef1c2a68ef91ce
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Cached checkouts could end up with stale untracked files, for example
because the checkout was interrupted.  As a result, when this happens
for the Guix checkout, users would not get substitutes for ‘guix pull’.

* guix/git.scm (delete-untracked-files): New procedure.
(switch-to-ref): Use it.
* tests/git.scm ("update-cached-checkout, untracked files removed"): New
test.

Co-authored-by: Ricardo Wurmus &lt;rekado@elephly.net&gt;
Change-Id: Iccbe644ade396ad27a037db7e0ef1c2a68ef91ce
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Assume ‘git’ is always available.</title>
<updated>2023-09-26T15:36:59+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2023-09-11T14:04:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=ba21eeb565fe414b3647173068a0f3eadd174c06'/>
<id>ba21eeb565fe414b3647173068a0f3eadd174c06</id>
<content type='text'>
* tests/channels.scm (gpg+git-available?): Check for ‘gpg-command’
only.
Remove all ‘test-skip’ statements.
* tests/derivations.scm: Likewise.
* tests/git-authenticate.scm: Likewise.
* tests/git.scm: Likewise.
* tests/import-git.scm: Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* tests/channels.scm (gpg+git-available?): Check for ‘gpg-command’
only.
Remove all ‘test-skip’ statements.
* tests/derivations.scm: Likewise.
* tests/git-authenticate.scm: Likewise.
* tests/git.scm: Likewise.
* tests/import-git.scm: Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>git: 'update-cached-checkout' returns the commit ID when given a tag.</title>
<updated>2022-10-17T07:37:27+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2022-10-11T09:16:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=46f7011591601b4783b2dc2c7252c41564ca0140'/>
<id>46f7011591601b4783b2dc2c7252c41564ca0140</id>
<content type='text'>
Previously, starting with commit
efa578ecaece67366b4b0e2266de7c2faaa4ae54, 'update-cached-checkout' would
return the OID of the annotated tag the tag points to.  With this change
it returns the OID of the commit object in all cases.

* guix/git.scm (resolve-reference): In the 'tag' case, call
'tag-target-id' and 'tag-lookup' when OID designates an annotated tag.
* tests/git.scm ("update-cached-checkout, tag"): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, starting with commit
efa578ecaece67366b4b0e2266de7c2faaa4ae54, 'update-cached-checkout' would
return the OID of the annotated tag the tag points to.  With this change
it returns the OID of the commit object in all cases.

* guix/git.scm (resolve-reference): In the 'tag' case, call
'tag-target-id' and 'tag-lookup' when OID designates an annotated tag.
* tests/git.scm ("update-cached-checkout, tag"): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>git: Add 'commit-descendant?'.</title>
<updated>2022-02-14T10:23:07+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2022-01-28T15:59:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=87d49346f3072f7b4343b6fb387ee5f9311493b7'/>
<id>87d49346f3072f7b4343b6fb387ee5f9311493b7</id>
<content type='text'>
* guix/git.scm (commit-descendant?): New procedure.
* tests/git.scm ("commit-descendant?"): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/git.scm (commit-descendant?): New procedure.
* tests/git.scm ("commit-descendant?"): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>import: Add 'generic-git' updater.</title>
<updated>2021-09-18T17:37:45+00:00</updated>
<author>
<name>Xinglu Chen</name>
<email>public@yoctocell.xyz</email>
</author>
<published>2021-09-17T08:04:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=59ee10754eddddb99e4a80b9e18aa12ed1b3d77a'/>
<id>59ee10754eddddb99e4a80b9e18aa12ed1b3d77a</id>
<content type='text'>
* guix/git.scm (ls-remote-refs): New procedure.
* tests/git.scm ("remote-refs" "remote-refs: only tags"): New tests.
* guix/import/git.scm: New file.
* doc/guix.texi (Invoking guix refresh): Document it.
* tests/import-git.scm: New test file.
* Makefile.am (MODULES, SCM_TESTS): Register the new files.

Co-authored-by: Sarah Morgensen &lt;iskarian@mgsn.dev&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/git.scm (ls-remote-refs): New procedure.
* tests/git.scm ("remote-refs" "remote-refs: only tags"): New tests.
* guix/import/git.scm: New file.
* doc/guix.texi (Invoking guix refresh): Document it.
* tests/import-git.scm: New test file.
* Makefile.am (MODULES, SCM_TESTS): Register the new files.

Co-authored-by: Sarah Morgensen &lt;iskarian@mgsn.dev&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
