Class: Ast::Merge::Git::CorpusAcquirer
- Inherits:
-
Object
- Object
- Ast::Merge::Git::CorpusAcquirer
- Defined in:
- lib/ast/merge/git/corpus.rb,
sig/ast/merge/git.rbs
Overview
Explicitly acquires a pinned remote without changing an existing tree.
Class Method Summary collapse
Class Method Details
.acquire(corpus:, destination:, tmp_root:) ⇒ Object
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 |
# File 'lib/ast/merge/git/corpus.rb', line 525 def acquire(corpus:, destination:, tmp_root:) corpus.validate! destination = Pathname(destination). tmp_root = Pathname(tmp_root). validate_destination!(destination, tmp_root) FileUtils.mkdir_p(destination.dirname) clone!(corpus.manifest.dig('source', 'remote_url'), destination) revision = corpus.manifest.dig('source', 'revision') git!('pinned revision missing after clone', '-C', destination.to_s, 'cat-file', '-e', "#{revision}^{commit}") git!('pinned revision checkout failed', '-C', destination.to_s, 'checkout', '--detach', '--quiet', revision) destination end |