[wildfly-dev] Handling history with the build split
Stuart Douglas
stuart.w.douglas at gmail.com
Tue Jun 17 20:25:49 EDT 2014
Hi all,
So something we have been thinking about is how best to handle history
when doing the split, there were three obvious options that we looked at:
1) Copy the repo for each split, and just delete what is no longer needed.
This means that you have full history, however each repo is 130Mb+, so
once you have 4 or more repos you are looking at a very large amount of
data to checkout a full WF server, which will probably put off potential
contributors.
2) Clean break
Copy the files into a core repo, and just have a clean break, which
means that if you want to view history you will need to refer to the
original WF repo, which is not great (I know I use history and git
annotate a lot). This also means that it looks like the whole server was
added by one person in a single commit, which is not great.
3) git filter-branch
We use the filer branch command to filter out all non-relevant history.
This means most history is intact, however you do loose the full context
of the commit if it modified subsystems that have been moved into
separate repos.
It looks like it should be possible to append the old commit sha to the
message on a new line, which will make it easy to look up the old commit
if you need to see the full context.
The interesting thing is that options 2) and 3) can also be used with a
little known command called 'git replace' (which is basically a
replacement for grafts), to basically graft the full history over the
top of the truncated/rewritten history. Basically if you care about the
full history you will be able to run a script, and it will graft the
complete WF history into your repo, so any command that works with
history will show each commit in its entirety.
I think we should use option 3) combined with 'git replace'. This means
that the repo will be much smaller, and contain a rewritten version of
history that should be enough for most people. If anyone needs a full
history (e.g. when doing backporting) all that will be required is
running a simple script to replace the fake history with the real thing.
Comments?
Stuart
More information about the wildfly-dev
mailing list