[Scummvm-devel] Interspective Innocent Engine
D G Turner
d.g.turner at ntlworld.com
Sun Jul 3 01:04:54 CEST 2011
Hi all,
The interspective innocent engine which can be found in the external
repo: http://repo.or.cz/w/scummvm-innocent.git, has not been updated
since 2009 and could not be build against our latest git master.
Since this engine contains a fair amount of progress, leaving it to
bitrot would be a shame, I looked and succeeded in working out the
required fixes to fix compilation.
I also then decided to try working out how to import the commits from
that repo into a branch of our repo history in order to apply these
fixes on top, so that anyone wanting to continue work on this engine
could do so.
However, since the original repo was based on a git-svn checkout
branching at SVN r43068, which predates our conversion to git, this
complicated the conversion.
With some significant Git help from wjp and fuzzie, I have been able
to complete the conversion while retaining the commit history for
the engine from the original repo, adding a merge of the latest
master and then adding my compilation fixes for innocent with the
latest master. The result can be found here:
https://github.com/digitall/scummvm/tree/innocent
Comments and forking are welcomed, especially from the original
developer who I have cc'ed on this e-mail.
P.S. For anyone needing to do something similar and wondering about
the required git commands, they were as follows:
(Starting from a fork of scummvm checked out as scummvm-digitall)
* git add remote innocent-original git://repo.or.cz/scummvm-innocent.git
* git fetch innocent-original master:innocent-original
* git checkout master
* (using gitk or git log to find the point of branching
i.e. in this case svn-r43068... find the git-id for this in master,
not in innocent-original)
* git branch -a innocent <id-of-branch-point>
(in this case : 8820b6166ecc5f2c76e926aefdbf4d3ad6f2f062)
* git clean -f (WARNING: This removes _all_ non versioned files from
the tree, used to prevent merge issues on the cherry pick later)
* (using gitk or git log find the ids of the first commit on the
innocent-original branch after the branch point and the last
commit)
(in this case c15c4013dcae120aa6c6fa51dde4fc6fd7df448a and
11ae6499454c0e2b790c807e269f5dc56390257e)
* (still on innocent branch):
git cherry-pick
c15c4013dcae120aa6c6fa51dde4fc6fd7df448a..11ae6499454c0e2b790c807e269f5dc56390257e
i.e. cherry pick all the commits from the "innocent-original" branch
since the branching point onto the new "innocent" branch which is based
on our git repo history.
WARNING: This will require a significant amount of time, and I think
a significant amount of (transient) disk space to complete.
* git -D innocent-original (remove the original repo commit history -
mainly to save disk space, but this will not be pushed anyway and has
not dependencies)
* git gc (This will clean up the removed references from the previous
deletion and will also ensure the new commits are compressed)
* git diff (--stat)
c15c4013dcae120aa6c6fa51dde4fc6fd7df448a..11ae6499454c0e2b790c807e269f5dc56390257e
(Review changes for any changes to base code which are not intended to
be kept after merge with master i.e. severe conflict)
* (Normal commit to remove / modify these)
* git merge master (This merges the changes since the branching point
on master to the "innocent" branch)
* (The previous command may get minor conflicts to deal with as
normal, by "git mergetool" and finalise with "git commit")
* (Normal commit to add engine compilation fixes required for master.
--
Thanks,
David Turner
"I have always wished that my computer would be as easy to use as
my telephone.
My wish has come true.
I no longer know how to use my telephone."
- Bjarne Stroustrup, the designer and original implementer of C++
More information about the Scummvm-devel
mailing list