summaryrefslogtreecommitdiff
path: root/morphlib/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Allow omitting repo and ref when referring to strataRichard Maw2014-02-131-3/+3
|
* Allow tagging branches with null refsRichard Maw2014-02-131-27/+13
| | | | | | | This includes various changes allowing the repo and ref fields to be missing; but also a change to the the component_key function, so that instead of generating a string, it returns a tuple, since it's only required to be a consistently hashable index.
* Update Copyright and wrap lines longer than 79 charsPedro Alvarez2014-02-041-2/+3
|
* Improve help for gc commandrichardipsum/gc_plugin_improve_helpRichard Ipsum2014-01-301-6/+9
|
* LocalArtifactCache now takes a an FS objectDaniel Firth2013-12-201-1/+2
|
* Replaces Tempdir with fs.tempfs.TempFSDaniel Firth2013-12-201-14/+17
|
* Deploy and cross-bootstrap commands no longer validate host architectureBen Brown2013-12-202-0/+17
|
* Modify morph to strip .morph extensions from parametersBen Brown2013-12-163-5/+7
|
* plugins: Convert deploy to new classes.Richard Maw2013-11-291-85/+70
| | | | | | | | | It now does not push branches as this is not necessary to locate the artifact. It still makes temporary build branches, since it is assumed that if you have changes in your workspace, it's preferable for the deploy to fail, rather than think you've deployed something you haven't.
* plugins: Use new build command as defaultRichard Maw2013-11-292-2/+2
| | | | The old build is still around for comparison.
* plugins: Add new build commandRichard Maw2013-11-291-0/+92
| | | | | | This uses all the new APIs, so the code is shared across morphlib and unit tested rather than everything being in one massive plugin that is only black-box tested.
* sysbranchdir: Move load_all_morphologies helper hereRichard Maw2013-11-291-9/+2
| | | | | | | | | | | | | | | This was previously a private method of the branch and merge plugin, but it's useful to other plugins, so has been moved to the SystemBranchDirectory class, where everything else can get to it. It has an unpleasant amount of coupling to other classes, but in a *good* object oriented design it would either be a tiny module on its own, or not exist and leave all its users to re-implement the same logic multiple ways, so we've opted for a less clean, but more useful design. It is left un-covered by the unit tests, since it requires a great deal of instrumentation to test, at which point it may be best to leave it to integration tests.
* GitDir: Add GitIndex classRichard Maw2013-11-221-1/+1
| | | | | | | | | | | | | | | This represents the state of the index of a GitDirectory. Methods that use the index are now used via the GitIndex class, rather than using the default index, as previously used when the methods were in GitDirectory. GitIndex may be constructed with an alternative path, which can be used to manipulate a git checkout without altering a developer's view of the repository i.e. The working tree and default index. This is needed for `morph build` and `morph deploy` to handle the build without commit logic.
* GitDir: Provide more specific object access than cat-fileRichard Maw2013-11-221-2/+2
| | | | | | | We need to use cat-file for files by SHA1, commits by SHA1 and files by ref and path, so provide access in separate methods, since while it's all the same thing "under the hood", it avoids the user needing to know the command-line syntax.
* Remove unused invent_new_branch methodRichard Maw2013-11-221-12/+0
|
* Fix typoRichard Ipsum2013-11-061-1/+1
|
* Added scenario test to prevent morph edit from being used without a system ↵Daniel Firth2013-11-011-0/+2
| | | | argument
* Added scenario test for preventing building uncommitted systemsDaniel Firth2013-11-011-1/+8
|
* Don't remove an existing branch in 'morph branch'Pedro Alvarez2013-10-311-0/+3
|
* Deploying a non-cluster morphology now displays an error messageDaniel Firth2013-10-301-0/+4
|
* Add --artifact-cache-server and --git-resolve-cache-serverLars Wirzenius2013-10-291-2/+5
|
* Building with references to tags will now instead use the underlying commitDaniel Firth2013-10-281-2/+3
|
* Tidy up debug output of morph buildDaniel Firth2013-10-281-1/+1
|
* build-without-push: Handle null repo/refRichard Maw2013-10-141-2/+2
| | | | | | | | | | | | | | This wasn't working, since the build-without-push code works by including morphologies that have had their ref changed to the branch's name. This is not done by edit if it is null, since the extra ref resolution can cause interesting issues. Instead of changing edit to continue to alter the ref, build will now allow null meaning this current repo/ref. This has the side-effect of also checking morphologies referred to by a null ref, even if they aren't altered, but it still works correctly.
* Merge branch 'danielfirth/RT193'Daniel Firth2013-10-111-1/+1
|\ | | | | | | | | Reviewed by: Lars Wirzenius Reviewed by: Pedro Alvarezwq
| * Added chunkname prefix to some elements of the debug log.Dan Firth2013-10-111-1/+1
| |
* | Merge branch 'danielfirth/RT219'Daniel Firth2013-10-111-1/+1
|\ \ | | | | | | | | | | | | Reviewed by Lars Wirzenius Reviewd by Richard Ipsum
| * | Morph now executes extensions in the repository containing the morphologiesDaniel Firth2013-09-261-1/+1
| | |
* | | Merge remote-tracking branch 'origin/baserock/richardipsum'Lars Wirzenius2013-10-081-2/+3
|\ \ \ | | | | | | | | | | | | | | | | Reviewed-by: Lars Wirzenius Reviewed-by: Richard Maw
| * | | Fix bug in autotools versionRichard Ipsum2013-10-081-2/+3
| | |/ | |/|
* | | Merge remote-tracking branch 'origin/danielfirth/RT189'Lars Wirzenius2013-10-082-13/+0
|\ \ \ | |/ / |/| | | | | Changed the error (exception) to list all obsolete fields.
| * | Re-enabled validation for morph editDan Firth2013-10-011-10/+0
| | |
| * | Dropped support for 'system-kind' from system morphology filesDan Firth2013-09-271-1/+0
| | |
| * | Dropped support for 'disk-size' from system morphology files'Dan Firth2013-09-271-2/+0
| |/
* | Merge branch 'baserock/richardmaw/S8847/branch-from-image-v3'Jonathan Maw2013-09-302-45/+149
|\ \ | | | | | | | | | | | | Reviewed-by: Lars Wirzenius <lars.wirzenius@codethink.co.uk> Reviewed-by: Jonathan Maw <jonathan.maw@codethink.co.uk>
| * | B&M: refactor branch-from-imageRichard Maw2013-09-252-9/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the interface of branch-from-image to only take 1 parameter, the name of the new system branch, as the root repository is loaded from the metadata. This was also what the previous version of branch-from-image did, but that silently ignored the parameter. Given there are not many users of branch-from-image, I felt it was a reasonable change.
| * | b&m: checkout and branch use context managerRichard Maw2013-09-251-36/+7
| | |
| * | b&m: Add system branch initializing context managerRichard Maw2013-09-251-0/+35
| |/ | | | | | | | | | | | | | | | | | | | | | | | | This creates an object that the with statement can use to handle the context and clean up the workspace if the body raises an exception. This is roughly equivalent to having a function that takes a callback of what to do while the branch is being initialized, but with less boilerplate at the call site. contextlib is used to create a context manager from a generator function. This is less verbose than defining a class with __enter__ and __exit__ methods.
* | Make branch commands work with null refsRichard Maw2013-09-261-1/+6
|/
* Make cross-bootstrap successfully build everythingJonathan Maw2013-09-241-7/+14
| | | | | | | | | | | | | | | | | This does three things: 1. It makes sure that the native-bootstrap script terminates if any steps fail. 2. It installs files to a temporary directory, then copies them out, so that builds don't break in cases where we delete files from DESTDIR. 3. It makes appropriate minor fixes so that a cross-bootstrap build can happen from beginning to end. Note: native-bootstrap does not succeed in every case. It has been observed to fail in an x86_64 virtual machine.
* b&m: Use new MorphSet api in unpetrifyRichard Maw2013-09-241-23/+1
|
* b&m: Refactor petrify to use new morphset methodsRichard Maw2013-09-241-17/+12
|
* Fix the graphing_plugin so it actually worksLars Wirzenius2013-09-231-3/+2
|
* b&m: Use new-status as the defaultRichard Maw2013-09-172-2/+2
| | | | The previous status is currently still available as old-status.
* b&m: morph new-status provides per-branch statusRichard Maw2013-09-171-1/+23
|
* b&m: Add new-status subcommandRichard Maw2013-09-171-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This currently performs the workspace-wide status, but not the system-branch status functionality of the older status subcommand. A quick estimate showed the new code to be 5x faster, comparing # time (echo 2 >/proc/sys/vm/drop_caches; morph status) System branches in current workspace: baserock/richardmaw/S8537/ssh-copy-id baserock/richardmaw/S8564/ro-staging-area baserock/richardmaw/S8591/lzo-shared baserock/richardmaw/cliapp-pipefail baserock/richardmaw/malformed-strata-test master tutorial-1/tutorial/master tutorial-1/tutorial/update-ssh real 0m2.517s user 0m0.998s sys 0m1.482s # time (echo 2 >/proc/sys/vm/drop_caches; morph new-status) System branches in current workspace: baserock/richardmaw/S8537/ssh-copy-id baserock/richardmaw/S8564/ro-staging-area baserock/richardmaw/S8591/lzo-shared baserock/richardmaw/cliapp-pipefail baserock/richardmaw/malformed-strata-test master tutorial-1/tutorial/master tutorial-1/tutorial/update-ssh real 0m0.506s user 0m0.207s sys 0m0.233s
* Merge branch 'baserock/richardmaw/S8717/refactor-petrify-v4'Richard Maw2013-09-162-2/+139
|\ | | | | | | | | | | | | | | Reviewed-by: Lars Wirzenius Reviewed-by: Daniel Silverstone Daniel gave his +1 with the caveat that he would like tests for petrifying a system branch other than master.
| * b&m: re-implement morph unpetrifyRichard Maw2013-09-052-2/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This also undoes the test suite change to keep it using the old petrify. Petrify and Unpetrify have the same structure: 1. Set up 2. Load all the morphologies 3. Make changes to the morphologies 4. Write back any changes This suggests some re-use in the form of passing a function callback to a morphology visitor.
| * b&m: Re-implement morph petrifyRichard Maw2013-09-052-1/+92
| | | | | | | | | | This includes amending the test suite to use the old petrify, since the old unpetrify depends on some implementation details of it.
* | foreach: sort repositories asciibeticallyRichard Maw2013-09-161-1/+1
|/ | | | | | | | | | | | | | | | | | | The test suite checks the output of the foreach command, this requires repositories to be returned in a stable order. The order returned from os.listdir differs by the filesystem used. btrfs returns roughly in insertion order, tmpfs alphabetically. This allowed the failure to sort pass through unchecked, since I was testing on btrfs, but people discovered issues when using /tmp, which is a tmpfs. To fix this, foreach sorts the result of list_git_directories() by directory name. The previous code would always return the root repository first, this was a unnecessary complication, so now everything is returned asciibetically and the tests amended to reflect this.