jku-isse / ecco

Feature-Oriented and Distributed Version Control System
https://jku-isse.github.io/ecco/
15 stars 16 forks source link
ecco gradle java

ECCO

Content

About

ECCO is a feature-oriented and distributed configuration management and version control system.

It supports variability in (i.e., the configuration of) any type of artifact (e.g., text, images, code) for which an adapter is available.

Originally, the name ECCO was an acronym for Extraction and Composition for Clone-and-Own.

Data Structures

A repository contains features, revisions, artifacts, and traces (i.e., mappings between features, revisions, and artifacts).

Operations

ECCO supports local operations as well as distributed operations.

Local Operations

Local Operations

Distributed Operations

Distributed Operations

Directories and Files

Repository Directory

The directory in which the repository contents are stored. By default named .ecco. It contains files used by the storage backend to persist the repository contents. Its contents depend on the used storage backend and should not be modified manually, except the following two files which are not specific to the used storage backend, are created by the init operation and can be modified manually.

Base Directory

The directory in which the raw implementation artifacts (files) of a variant reside. Also sometimes called working directory. The contents of this directory are processed by the readers of the respective artifact adapters during a commit and created by the writers of the respective artifact adapters during a checkout. The contents in this directory are created by the user and can be arbitrarily modified during development, except the following three files which are created by the checkout and commit operations.

Artifact Types

Artifact Adapters

Use Cases

Quick Start

Get the code: git clone or download zip file into <working_dir>.

Requires:

Run gradle tasks in <working_dir> for a list of supported tasks.

Examples:

IDEs

IntelliJ

IntelliJ supports Gradle out of the box. Just open the project using File > Open.

Eclipse

This information might be outdated!

Eclipse does not support Gradle by default. There is a Gradle plugin for Eclipse, but I do not recommend it! Instead, follow these steps:

Create Eclipse projects from Gradle projects: gradle eclipse. This creates the .project and .classpath files Eclipse needs for every project.

Import the created Eclipse projects into your Eclipse workspace: File > Import > General > Existing Projects Into Workspace.

Select all shown projects and import them.

Disable errors for cyclic dependencies in Eclipse: Window > Preferences > Java > Compiler > Building > Build path problems > Circular dependencies > Warning.

Project Structure

Project Structure

The root-project ecco consists of a number of sub-projects.

Core Projects

Application Projects

Plugin Projects

Examples

Publications

Peer-Reviewed Journals

Lukas Linsbauer, Roberto Erick Lopez-Herrejon, Alexander Egyed: Variability Extraction and Modeling for Product Variants. Software and Systems Modeling (SoSyM), 2016, 1-21

Peer-Reviewed Conferences

Gabriela Karoline Michelon, Lukas Linsbauer, Wesley K. G. Assunção, Alexander Egyed: Comparison-Based Feature Location in ArgoUML Variants. Systems and Software Product Line Conference (SPLC) Challenge Solutions, 2019, 93–97

Lukas Linsbauer, Roberto Erick Lopez-Herrejon, Alexander Egyed: A Variability Aware Configuration Management and Revision Control Platform. International Conference on Software Engineering (ICSE) Doctoral Symposium, 2016, 803-806

Stefan Fischer, Lukas Linsbauer, Roberto Erick Lopez-Herrejon, Alexander Egyed: Enhancing Clone-and-Own with Systematic Reuse for Developing Software Variants. International Conference on Software Maintenance and Evolution (ICSME), 2014, 391-400

Lukas Linsbauer, Florian Angerer, Paul Grünbacher, Daniela Lettner, Herbert Prähofer, Roberto Erick Lopez-Herrejon, Alexander Egyed: Recovering Feature-to-Code Mappings in Mixed-Variability Software Systems. International Conference on Software Maintenance and Evolution (ICSME), 2014, 426-430

Lukas Linsbauer, Roberto Erick Lopez-Herrejon, Alexander Egyed: Recovering Traceability between Features and Code in Product Variants. Software Product Line Conference (SPLC), 2013, 131-140

Peer-Reviewed Workshops

Lukas Linsbauer, Stefan Fischer, Roberto Erick Lopez-Herrejon, Alexander Egyed: Using Traceability for Incremental Construction and Evolution of Software Product Portfolios. Software and Systems Traceability (SST), 2015, 57-60