xtext-core/splitting
Moritz Eysholdt 1d049144f8 [splitting] sorted do-be-deleted files
Signed-off-by: Moritz Eysholdt <moritz.eysholdt@typefox.io>
2016-06-13 14:41:18 +02:00
..
.settings Created splitting project, implemented project finder 2016-06-07 17:33:15 +02:00
src/org/eclipse/xtext/splitting [splitting] Validate ambiguous specifications in splitting.txt 2016-06-13 14:18: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 Removed xtext-website and xtend-website repositories 2016-06-13 10:07:31 +02:00
git-filter-branch.sh fixed the branch name 2016-06-11 11:08:31 +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 [splitting] sorted do-be-deleted files 2016-06-13 14:41:18 +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.