xtext-core/splitting
2016-06-10 14:37:52 +02:00
..
.settings Created splitting project, implemented project finder 2016-06-07 17:33:15 +02:00
src/org/eclipse/xtext/splitting Added src-gen, xtend-gen etc. to generated list of removal paths 2016-06-08 16:02:01 +02:00
.classpath Created splitting project, implemented project finder 2016-06-07 17:33:15 +02:00
.project Created splitting project, implemented project finder 2016-06-07 17:33:15 +02:00
build.gradle Create branches before doing filter-branch and a added a task that combines all filter-branch tasks 2016-06-10 14:01:43 +02:00
git-filter-branch.sh Changed target branch to origin/master 2016-06-10 14:37:52 +02:00
parent-filter.sh Implemented filter-branch tasks for each target repository 2016-06-08 12:08:31 +02:00
README.md Passing path to shell scripts as argument, created README.md 2016-06-08 13:52:23 +02:00
settings.gradle Created splitting project, implemented project finder 2016-06-07 17:33:15 +02:00
splitting.txt Added separate-builds to splitting.txt 2016-06-10 14:26:07 +02:00

Repository Splitting

This project provides tools for splitting the Xtext repository as described in the Wiki. This is the proposed work flow:

  1. ../gradlew findProjects creates build/splitting/all-projects.txt, a list of all projects (paths with a .project file) that have ever been in the history, and build/splitting/unmapped-paths.txt, a list of paths that are not covered by any project.
  2. Create splitting.txt based on the results of the previous step. This file must consist of lines of the form path >> target-repos, where path can be any file or directory in the repository and target-repos is either delete or a list of repository ids where that path should be included.
  3. ../gradlew clean validateSplitting checks whether splitting.txt covers all files found in the history.
  4. ../gradlew generateRemovals creates build/splitting/removals-*.txt for each target repository.

Now you have all necessary data to perform the actual splitting. In order to do this:

  1. Create and checkout a new branch.
  2. Run ../gradlew *FilterBranch, where * is the target repository id.
  3. Find something else to do (on my machine the previous command takes more than one hour).
  4. Push the resulting branch to the corresponding repository.