summaryrefslogtreecommitdiff
path: root/src/other_tools/just_mr/setup.cpp
AgeCommit message (Collapse)Author
2024-06-27Use a raw pointer for passing optional IExecutionApiMaksim Denisov
...instead of std::optional<gsl::not_null<IExecutionApi const*>>
2024-06-25Pass ApiBundle to ServeApiMaksim Denisov
2024-06-25Use ApiBundle for creation of APIs in just-mrMaksim Denisov
2024-06-25Use a general boolean for compatible in MultiRepoCommonArgumentsMaksim Denisov
2024-06-18Create an individual instance of RemoteServeConfig in just-mrMaksim Denisov
...instead of initialization of the singleton.
2024-06-18Make ServeApi a general class, not a singletonMaksim Denisov
...and adjust interfaces.
2024-06-18Pass ServeApi to just-mr maps by referenceMaksim Denisov
...instead of using singleton calls.
2024-06-18Use ServeApi functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-04-23just-mr: Make outer non-trivial async map consumers noexceptPaul Cristian Sarbu
For setup and update subcommands, the consumer lambdas for their respective async maps are non-trivial (i.e., do more than keeping the map values) and operate on ungaurded JSON objects, thus it is better to guard them against any uncaught exceptions.
2024-04-23just-mr: Fix map key type bug in repository setupPaul Cristian Sarbu
When taking over roots from the input repository description, the JSON value was not properly checked for validity (i.e., if it is of type string), resulting in an unhandled exception being thrown. The issue is fixed with a proper type check.
2024-04-08Use properly included standard library types by defaultPaul Cristian Sarbu
2024-03-05Support checkout of foreign-file reposKlaus Aehlig
2024-02-27just-mr: Correct handling of remotes with respect to compatibility modePaul Cristian Sarbu
In order to set up roots, just-mr is able to interrogate, if given, serve and/or remote-execution endpoints. However, just-mr operates only with Git hashes, i.e., with a native mode CAS. This commit ensures the correct interactions occur between just-mr and the provided endpoints not only in native mode, but also in comaptible mode, where a serve endpoint might be present even if one cannot make use of its associated remote-exection endpoint. The user always gets informed if any incompatibilities are detected.
2024-02-27just-mr setup archive: Local roots require the archive blob to be local tooPaul Cristian Sarbu
For archive repositories we need to ensure that a non-absent root is backed by an archive content blob in the local CAS, in order to also keep the proper root tree file associations. This change also simplifies the content_cas_map logic by removing the previous separation of implementation logic between fetching and setting up the workspace root.
2024-01-31just-mr: Serve endpoint always implies a remote-execution endpointPaul Cristian Sarbu
As the serve service always has an associated remote-execution endpoint, when just-mr gets passed only a serve endpoint address it will now default to implying a remote-execution endpoint exists too at that address. Additionally, now the implementation of the --backup-to-remote option more clearly shows that it can only be done in native mode.
2024-01-26just-mr 'git tree' repository: Absent roots sync with serve endpointPaul Cristian Sarbu
To take advantage of absent roots, we need to ensure that a given serve endpoint can build against the tree of this generated root. To this end, for a 'git tree' repository we only set the root as absent only if the given serve endpoint has this root, or the tree is known locally and can be provided via the remote CAS. While generating an absent root the fetch command will never be called. Generating an absent root without being provided a serve endpoint is still allowed, but results in a warning.
2024-01-26fpath_git_map: Sync pragma 'to_git' root trees with serve endpointPaul Cristian Sarbu
Marking a file-type repository as 'to_git' results in a Git-tree type root, which are of course content fixed and can be (and usually are) used by export targets. Therefore, it is beneficial for a serve endpoint, if one is provided, to be aware of such a root and be able to build against it if needed. If the root is marked as absent, this condition becomes mandatory. Generating an absent Git-tree root without being provided a serve endpoint is still allowed, but results in a warning.
2024-01-26just-mr async maps: Wrap passed raw pointersPaul Cristian Sarbu
This is to uphold the coding style guide we employ.
2024-01-26just-mr: Fix missing ExpressionPtr type checks in parsing the config filePaul Cristian Sarbu
2024-01-24just-mr: in to_git warning, report actual tool namesKlaus Aehlig
... instead of some hard-coded strings, as that can be confusing when the tool is packaged under a different name.
2024-01-08just-mr distdir: Improved handling of absent rootPaul Cristian Sarbu
If root is marked absent and we're not asked to fetch absent, we can compute the resulting distdir root tree in-memory, as we have all the information. Otherwise, i.e., if we actually need to have the archives locally, we first check if the remote serve can provide them in the remote CAS before continuing as before to fetch the listed archives one at a time.
2023-12-19just-mr fetch content: Check for blob also in Git cachePaul Cristian Sarbu
Now we look for the content blob also in the local Git cache, not just in local CAS. If found, we store the blob read from Git cache into local CAS and continue as usual.
2023-12-07just-mr fetch: Extend to include 'git tree' repositoriesPaul Cristian Sarbu
This includes implementing the logic for the --backup-to-remote and --fetch-absent options.
2023-12-07just-mr setup: Allow --fetch-absent also for 'git tree' repositoriesPaul Cristian Sarbu
2023-12-07just-mr git tree: Interrogate also just serve endpoint if providedPaul Cristian Sarbu
2023-12-07just-mr git tree: Extract the fetch logic in its own async mapPaul Cristian Sarbu
2023-12-07just-mr git tree: Inquire remote execution before calling fetch commandPaul Cristian Sarbu
2023-11-21content_cas_map: Interrogate just serve endpoint also if doing pure fetchPaul Cristian Sarbu
Before trying to fetch an archive content from other non-local sources, check first the just serve endpoint.
2023-11-15just-mr: Update to using the static methods of ServeApiPaul Cristian Sarbu
2023-11-14just-mr archives fetch: Add logic for local mirrors and preferred hostnamesPaul Cristian Sarbu
2023-11-14just-mr git fetch: Add logic for local mirrors and preferred hostnamesPaul Cristian Sarbu
2023-11-02content git map: Add handling of --fetch-absent optionPaul Cristian Sarbu
2023-11-02content git map: Move handling of --fetch-absent flag from checkout to the ↵Paul Cristian Sarbu
map itself
2023-11-02Decoupling symlinks map and CAS utilities from just-mrPaul Cristian Sarbu
This is required in order to make them available to 'just serve' in a minimal just installation.
2023-09-15just serve: add remote execution endpoint and --fetch-absent optionPaul Cristian Sarbu
The serve service will communicate with this endpoint when needed, as well as ensure artifacts it provides are synced with the remote execution CAS, if requested by the client. If just-mr is given the --fetch-absent option, it Always produce present roots irrespective of the 'absent' pragma. For Git repositories marked with the 'absent' pragma, first try to fetch any commit trees provided by the serve endpoint from the execution endpoint CAS, before reverting to a network fetch. Co-authored-by: Klaus Aehlig <klaus.aehlig@huawei.com> Co-authored-by: Alberto Sartori <alberto.sartori@huawei.com>
2023-09-13just-mr: Implement 'absent' rootsPaul Cristian Sarbu
...via an 'absent' pragma in repository descriptions. For 'git'-type repositories, first interrogates a 'just serve' remote, if given, before reverting to fetching from the network.
2023-08-25just-mr: Interrogate remote CAS before defaulting to network fetch...Paul Cristian Sarbu
...for archives not already in local CAS.
2023-08-25just-mr utils: Extract setup-related code into separate libraryPaul Cristian Sarbu
This better separates the utility methods used in just-mr commands and avoids any cyclic dependencies that might arise in new utility methods requiring both existing utilities and the command-line arguments.
2023-08-23just-mr: Split main codePaul Cristian Sarbu
...by moving subcommands code into separate libraries. This maintains a cleaner code structure and lowers the build time by improving target caching.