| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
The helper class, Factory, has unit tests, which is why it's currently
separate. It may later get integrated with BlobBuilder, or the other
way around.
Classes that don't have unit tests are marked out of coverage.
|
|
|
|
|
|
|
|
|
| |
This is done to keep the git repository intact with history and all
that. cp + checkout turns out to be faster than a regular "git clone".
In order to avoid roundtrips to the internet whenever a chunk tries to
do something with submodules, we force the submodule URLs to point to
our locally cached repos.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is almost as good as --bare. But unlike --bare, it properly sets up
the 'origin' remote and creates the 'refs/remotes/origin/...' branches.
When cloning with --bare, and you end up with "refs/heads/master", not
"/refs/remotes/origin/master". You can re-add the remote 'origin', still
no "refs/remotes/origin/master". Only after you update the remote (after
re-adding it), the bare clone has "refs/remotes/origin/master"... and a
"refs/heads/master" that is out of sync. An ugly mix, basically.
So maybe this approach is better.
|
|
|
|
|
|
| |
This usually means that these submodules have been imported into the
source tree and no longer need to be updated from their original
repository.
|
|
|
|
|
|
| |
For some reason, "git bundle unbundle" doesn't work for me, but "git clone" does.
Then, adding a remote fails, because the cloned bundle already has one, so now
we'll use "git remote set-url" and "git remote update".
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change requires the latest version of cliapp to be installed.
Rather than creating an archive from the cached git repositories,
moving this tarball archive into the cache and then extracting it from
there into the build directory, we now directly extract the sources into
the build directory.
We also recursively extract all submodules into the corresponding paths
inside the build directory. (Recursing has not been tested yet,
however.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit introduces the following new classes:
morphlib.git.Submodules:
* takes a parent repo treeish
* parses the .gitmodule file into morphlib.git.Submodule objects
* provides iterator/container functionality for submodules
morphlib.git.Submodule:
* represents a single entry in a .gitmodules file
* stores a Treeish for the corresponding repository
In addition to this, the exception classes InvalidTreeish and
SourceNotFound where renamed to InvalidReferenceError and
RepositoryUpdateError. Several new exception classes were added for when
resolving submodules fails.
The SourceManager now resolves the Submodules and Submodule objects for
the submodules of a Treeish in SourceManager.get_treeish() and also
takes care of caching submodule repositories whenever necessary.
|
|
|
|
|
| |
This change is necessary because upstream git no longer allows --remote
to be combined with an arbitrary SHA1.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This affects pretty much every part of morph, so this might not be fully
working and stable yet.
This commit also introduces the "update-gits" command that can be used
to update all cached repositories from the list of base URLs. The tree
walk when resolving the Treeish objects in Builder.get_cache_id() is a
bit similar to what we do in BuildDependencyGraph, maybe we can merge
that one day.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Later, add compression by piping to a gzip process.
|
|
|
|
|
| |
Previously, we've been able to get morphs for strata and systems
directly from files, with uncommitted changes. No more.
|
| |
|
| |
|
|
|