Ben Coman wrote
> An interesting challenge.  I've had a go at it and got it as far as I can
> without knowing Magritte.

Thanks for the push! Not knowing all that much about git, I tried a
different way and seem to have successfully rebuilt the master branch of my
fork ( on top of the master from
the upstream, based on the last shared (content) commit (upstream 51f648b vs
fork 47df0a5, both titled "[FIX]: Respect action shortcuts…")

In case it helps anyone in the future, here is what I did:
1. Create new branch from upstream master and revert to 51f648b
2. Create git log of commits from fork's first divergent commit (bff9c25
"Dynamic Options…") to HEAD, via git log `47df0a5..eedd386 --pretty=fuller >
3. For each commit in log:
  a. `git mv source repository` - temporarily rename "source" (code
subfolder from upstream) to "repository" (subfolder from fork) to ease
  b. `git cherry-pick -n $sha1` (where sha1 = e.g. bff9c25) - replay changes
without committing
  c. `git rm -f */methodProperties.json` and then `git rm -f */version` -
remove metadata, since upstream commits are metadata-less
  d. `git reset HEAD` - reset git so it forgets about steps a and c, which
are just to conform the fork commits to upstream, but leaves the actual
changes in place
  e. `mv repository/ source`
  f. `git add -A` - inform git about all changes now that everything is how
we want it
  g. `git commit --date="Sun Mar 25 22:57:40 2018 -0400" -m "Fix #17…"
--author="Sean DeNigris <>"`- commit preserving
original author and author date

The above process was eased by a single Pharo helper class, `GitCommit`,
which parsed the log from #2 above into domain objects and created and
executed the commands in #3. I used quick and dirty `LibC system:…` messages
instead of libgit since I'm a novice and the whole task was a hack.

Now my fork's master is branched off upstream master, so hopefully that
eases integration of my enhancements. I'm not exactly sure how to proceed
from here, so suggestions welcome…

Sent from:

Reply via email to