Age | Commit message (Collapse) | Author |
|
When deciding if a repository is a computed root (i.e., of type
"computed" or "tree structure"), first follow indirections.
Otherwise we would try to read of the "type" entry of a string
which, of course, crashes.
Based on the similar fix for just-import-git.
|
|
Python's Global Interpreter Lock (GIL) hugely reduces the amount of
parallelism one can achieve. However, as cloning repositories is
I/O bound, the total runtime is improved by running it in parallel.
|
|
Python's Global Interpreter Lock (GIL) hugely reduces the amount of
parallelism one can achieve. However, as the checkout methods are
I/O bound, the total runtime is improved by running them in
parallel.
|
|
This will allow it to be run mostly asynchronously with other
checkouts in the future.
|
|
This will allow it to be run mostly asynchronously with other
checkouts in the future.
|
|
This will allow it to be run mostly asynchronously with other
checkouts in the future.
|
|
Similarly to how it is done in just-mr:
- lock against concurrent git-tag calls;
- extend git-fetch call with arguments that ensure thread-safe
operation.
|
|
|
|
...by first retrieving only the desired commit id from the
definitive remote in order to allow it to be checked against the
local Git cache. This massively reduces the average network traffic
from regenerating the just-mr configuration in justbuild projects
that always require the latest version of their dependencies.
|
|
|
|
|
|
|
|
Match correctly the behavior of just-mr, i.e., resolve the special
entries of the relevant subtree of the original tree instead of
taking the subtree of the resolved original tree. This also means
that the clones of archives can directly stage the relevant subdir
of the unpacked content and forward any 'special' pragma (same as
for other cloned repository types).
|
|
|
|
|
|
...in handling mutable objects.
In particular, treat mutable function variables, as well as any
references they might contain, as constant.
|
|
...with not-None defaults.
While there, fix wrong command environment set in 'git tree'
imports.
|
|
|
|
...such as 'archive', 'zip', 'foreign file', and 'distdir'.
|
|
|
|
|
|
For these repositories the clone will contain only the subdir of
the resolved unpacked archive.
|
|
|
|
This option stages locally the sources (i.e., workspace root) of a
target repository found by following a list of bindings from a
known starting repository. The final configuration will keep during
deduplication the names of each starting repository and each target
repository, with the output configuration updated to point to these
local clones. Precomputed repositories cannot be cloned.
Implementation is split in multiple commits.
This commit contains the main logic for handling cloning. Currently
only support for 'file' repositories is implemented. The code
structure allows it to be subsequently extended to all other
repository types.
|
|
Preparatory commit for implementation of '--clone' option.
|
|
|
|
Marking a source repository 'as plain' means that the whole source
repository tree will get imported as a repository type
corresponding to the source type. In this case, additional pragmas
than those supported by the inndividual imports might need to be
set.
Solve this by supporting the just-mr-style 'pragma' field also in
the source description, for all sources also accepting the
'as plain' field. Currently support only the 'special' pragma.
Document change and add test for plain imports that checks this
feature.
|
|
In particular, any transitive 'file'-type repository will inherit
any given '{to_git: true}' pragma in the import description
objects. Note that this technically can only happen for transitive
'file' repositories imported from a 'file' source, so in all other
cases such a pragma would not have any effect.
Document change and extend the import from 'file' source test to
check this feature.
|
|
Transitive 'file'-type repositories should inherit any pragmas
suported by the new repository type they are rewritten as.
Extend import tests to avoid regressing on this issue in the
future.
|
|
...before trying remotes.
|
|
While there, improve docstrings of methods operating on Git
repositories to specify when the underlying Git repositories are
expected to be present.
|
|
Based on f0473730 and 22ef0a16
|
|
Based on 76ce2123
|
|
|
|
|
|
|
|
|
|
|
|
...below the GitCAS and CAS utilities, in order for those to be
available for use when implementing the other import source types.
|
|
Enforce 'subdir' field of 'archive' import source to also be
non-upward.
Normalize subdirs during rewrite of dependent 'file'-type
repositories.
|
|
|
|
The rewrite logic assumes that for repositories taken as layers we
will not have certain fields and so they are unconditionally
reassigned.
Fix this by extending the existing check for bindings to include
also alternative roots and root files.
|
|
Use local CAS to cache fetched archives. Take the storage garbage
collector shared lock to guard against unwanted generation
rotations.
|
|
Add file locking logic; guard critical Git operations with the
same approach as in Just and also take the repositories garbage
collector shared lock to guard against unwanted generation
rotations.
|
|
When commit to fetch is known, check mirrors before going to the
main URL.
While there, ensure the context for logging in the checkout method is
not replaced, but appended to.
|
|
|
|
...to better reflect intent. In particular, improve the name of the
variable storing the partial description to be used during rewrite
of dependent 'file'-type repositories brought in by an import.
|
|
|
|
|
|
|