[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