repositories issueshttps://git.mdns.eu/epm/repositories/-/issues2020-02-10T19:10:48Zhttps://git.mdns.eu/epm/repositories/-/issues/13Add NoAutoCommit option to repositories2020-02-10T19:10:48ZMarius David WieschollekAdd NoAutoCommit option to repositories### Description
The NoAutoCommit option marks repositories which should not be committed/checked out automatically on commit/checkout actions.
#### Use-Cases
* The `isNoAutoCommit()` method is present in the repository model interface ...### Description
The NoAutoCommit option marks repositories which should not be committed/checked out automatically on commit/checkout actions.
#### Use-Cases
* The `isNoAutoCommit()` method is present in the repository model interface and returns a boolean
* `NoAutoCommit` is supported by the repository templates but not user editable
* `NoAutoCommit` is false by default
* In the `checkout` job, the `--skip` parameter is removed
* In the `checkout` job, the first attribute can be a repository name. If it is, only this repository will be checked out
* In the `checkout` job, if no repository name is given, all repositories with `NoAutoCommit=false` will be checked out
* In the `commit` job, the `--skip` parameter is removed
* In the `commit` job, the first attribute can be a repository name. If it is, only this repository will be committed
* In the `commit` job, if no repository name is given, all repositories with `NoAutoCommit=false` will be committed
#### Todo
* [ ] Wiki updatedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/12`epm up` hook crashes if repository deleted2020-02-10T19:11:02ZMarius David Wieschollek`epm up` hook crashes if repository deleted#### General
**EPM Version:** 0.7.0
**Report:** repositories_5937f88edd407
**Modules:** epm git commands repositories docker fbs user
#### Steps to reproduce
1. Create a repository
2. Synchronize with remote host
3. Clone the project...#### General
**EPM Version:** 0.7.0
**Report:** repositories_5937f88edd407
**Modules:** epm git commands repositories docker fbs user
#### Steps to reproduce
1. Create a repository
2. Synchronize with remote host
3. Clone the project on another PC
4. Delete the repository
5. Synchronize with remote host
6. Run `epm up` on the other pc
#### Expected behavior
Repository is deleted without issues.
#### Actual behavior
The module crashes when it tries to apply the update[repositories_5937f88edd407.txt](/uploads/5ed33a1bedc5f17a1438a31e44a9cb82/repositories_5937f88edd407.txt)Repositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/11OverlayFS sould delete contents of upper directory after commit2020-02-10T19:11:06ZMarius David WieschollekOverlayFS sould delete contents of upper directory after commit#### General
**EPM Version:** 0.7.1
**Modules:** epm dev experiments git commands repositories docker fbs user
#### Steps to reproduce
1. Create a repository with overlayFS storage
2. Put lots of files and folders in it
3. Commit the ...#### General
**EPM Version:** 0.7.1
**Modules:** epm dev experiments git commands repositories docker fbs user
#### Steps to reproduce
1. Create a repository with overlayFS storage
2. Put lots of files and folders in it
3. Commit the repository
#### Expected behavior
All files are committed and moved from the upper directory to the lower directory.
After the commit the upper directory is empty.
#### Actual behavior
Folder structure is still preserved in the Upper directory, also the "Work" directory is not cleared.
OverlayFS believes the files have been deleted and does not show them.Repositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/10Store element status in model2020-02-10T19:11:28ZMarius David WieschollekStore element status in model### Description
Currently the status of an element (Repository, Branch, Revision) is only stored in OIS. It should be available in the model of the element as well.
#### Use-Cases
* `$repository->getModel()->isDeleted(): bool` returns ...### Description
Currently the status of an element (Repository, Branch, Revision) is only stored in OIS. It should be available in the model of the element as well.
#### Use-Cases
* `$repository->getModel()->isDeleted(): bool` returns if the repository is deleted
* `$banch->getModel()->isDeleted(): bool` returns if the banch is deleted
* `$revision->getModel()->isDeleted(): bool` returns if the revision is deleted
* `$repository->getModel()->setDeleted(bool $deleted)` sets if the repository is deleted
* `$banch->getModel()->setDeleted(bool $deleted)` sets if the banch is deleted
* `$revision->getModel()->setDeleted(bool $deleted)` sets if the revision is deleted
* OIS is not updated automatically if setDeleted is called
* The `$object->delete()` methods set the deleted status correct
* An upgrade for existing objects is provided
* The repair jobs restores information from the OIS
#### Todo
* [ ] Wiki updatedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/9Allow to checkout older revisions of a branch2020-02-10T19:12:58ZMarius David WieschollekAllow to checkout older revisions of a branch### Description
The checkout job should allow you to checkout older versions of a branch.
#### Use-Cases
* If a revision timestamp is submitted to the checkout job, branches are only checked out if the revision exists
#### Todo
* [ ]...### Description
The checkout job should allow you to checkout older versions of a branch.
#### Use-Cases
* If a revision timestamp is submitted to the checkout job, branches are only checked out if the revision exists
#### Todo
* [ ] Wiki updatedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/8Use threads in origin synchronisation2020-02-10T19:12:55ZMarius David WieschollekUse threads in origin synchronisation### Description
The current synchronization can be very slow since it can only upload one file per time.
Due to the usual overhead, this will not use the whole bandwidth available.
Synchronizing several files at the same time using threa...### Description
The current synchronization can be very slow since it can only upload one file per time.
Due to the usual overhead, this will not use the whole bandwidth available.
Synchronizing several files at the same time using threads will improve this.
#### Use-Cases
* The storage synchronization helper sorts actions into two queues: upload files and delete remote in the remote queue and download files and delete local in the local queue
* Both queues are processed with several threads simultaneously. By default there are 4 threads per queue.
* The amount of threads can be set in a `$cfg` setting.Repositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/7Improved revision listing for branches2020-02-10T19:12:50ZMarius David WieschollekImproved revision listing for branches### Description
The `branch:analyze` job lists all revisions starting with the first one.
Since child revisions are always padded, this view wastes a lot of space.
Starting with the latest revision and listing discontinued lines with pad...### Description
The `branch:analyze` job lists all revisions starting with the first one.
Since child revisions are always padded, this view wastes a lot of space.
Starting with the latest revision and listing discontinued lines with padding will solve this.
#### Use-Cases
* Revisions listed from the latest revision to the first revision
* The first level contains all revisions which are in a line from the latest revision to the first
* Revisions which are not in the main line are moved to lower levels and shown as children of the revision which they originate from
* child revisions are shown before their parentRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/6Display detailed repository information2020-02-10T19:12:47ZMarius David WieschollekDisplay detailed repository information### Description
Right now the repository:analyze job does only show generic information about the repository properties.
There should also be a section which shows repository type specific information.
#### Use-Cases
* The job `epm rep...### Description
Right now the repository:analyze job does only show generic information about the repository properties.
There should also be a section which shows repository type specific information.
#### Use-Cases
* The job `epm repositories:analyze` calls a hook or helper to enable custom information
* Information providers for the default repositories are providedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/5OverlayFs Storage should offer force unmount option2020-02-10T19:12:44ZMarius David WieschollekOverlayFs Storage should offer force unmount option### Description
Currently the OverlayFs storage throws a "target is busy" code exception if it is unmounted while in use.
Instead the storage should check if a path is safe to unmount and offer to kill blocking processes.
#### Use-Cases...### Description
Currently the OverlayFs storage throws a "target is busy" code exception if it is unmounted while in use.
Instead the storage should check if a path is safe to unmount and offer to kill blocking processes.
#### Use-Cases
* Before unmounting a path, `lsof +D <path>` is run to check if it is still used
* If a process is blocking the path, OverlayFs asks if the process should be killed
* If the user does not want to kill the process, a UserException is thrown
* If the user decides to unmount forcefully, the blocking processes are terminated
* After termination, the path is checked again before the normal unmount process continues
[repositories_58f0b5855ac1b.txt](/uploads/6f28c41261a4763cf06e5acb9b16aaa7/repositories_58f0b5855ac1b.txt)Repositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/3Support different different filesystems for OverlayFs2020-02-10T19:12:34ZMarius David WieschollekSupport different different filesystems for OverlayFs### Description
Short description of the feature
#### Use-Cases
* First state to be archived
* Second state to be archived
#### Todo
* [ ] Wiki updated### Description
Short description of the feature
#### Use-Cases
* First state to be archived
* Second state to be archived
#### Todo
* [ ] Wiki updatedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/4Repair corrupted projects2020-02-10T19:12:31ZMarius David WieschollekRepair corrupted projects### Description
It can happen that projects are damaged for some reasons and fail to operate as expected. There should be a job which tires to fix this as much as possible.
#### Use-Cases
* A job called `project:repair` is created
* ...### Description
It can happen that projects are damaged for some reasons and fail to operate as expected. There should be a job which tires to fix this as much as possible.
#### Use-Cases
* A job called `project:repair` is created
* The job fixes errors and missing objects in ois
* The job fixes errors in the registry like missing revisions and errors in the local status
* The job tries to recover unreadable branches and revisions
* The job tries to fix errors in the file structure
* The job tries to fix errors in the data of branches and revisions
#### Todo
* [ ] Wiki updatedRepositories 0.8.0https://git.mdns.eu/epm/repositories/-/issues/2Filters to replace files with placeholders2020-02-10T19:12:22ZMarius David WieschollekFilters to replace files with placeholdersTo reduce project size, filters could be used to replace files matching predefined rules with demo content. When new files are committed to the repository, a set of filters is run on them. If a filter matches, the file is replaced with p...To reduce project size, filters could be used to replace files matching predefined rules with demo content. When new files are committed to the repository, a set of filters is run on them. If a filter matches, the file is replaced with placeholder content.
#### Implementation
- Create a new type of storage, that runs the filters when a new file is added
- If a filter matches, put the demo content in the storage and return its md5 sum to the repository
#### Enhancements
- Add some kind of hook to make filters available in all kinds of repositories
#### Pro
- Less storage is used
#### Con
- Commit jobs will be slowerRepositories 0.8.0