xtext-core/splitting
Moritz Eysholdt 6a91f2eae2 fine-tuned splitting.txt based on the Tycho build
Signed-off-by: Moritz Eysholdt <moritz.eysholdt@typefox.io>
2016-06-12 15:56:40 +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 [splitting] added gradle task to push result to github tmp-repo 2016-06-12 12:04:51 +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 fine-tuned splitting.txt based on the Tycho build 2016-06-12 15:56:40 +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.