On 02/02/2016 12:54 PM, Eliot Miranda
wrote:
Hi Dale,
Good question, FileTree has been supported on Squeak since the very
beginning (I along with a small number of Squeak users have made
sure of that).
So TODAY, any Squeak user can "look at, load and commit" any package
that has been written using FileTree (with or without Monticello
meta data).
[1] https://github.com/dalehenrich/filetree/tree/squeak4.3#squeak
Monticello meta data is not an integral part of the "package-ness"
of a Monticello package ... it _is_ integral to the
"repository-ness" of a Monticello package ...
If the Monticello metadata is "thrown away" then the revision
history for Monticello is lost, but for a package that is "born" in
a git repository, the Monticello metadata is not needed. Git has
it's own commit meta data and the Monticello metadata is redundant.
If you want to see the revision history from a git-based FileTree
repo, then:
�� 1. one can include the Monticello meta data as part of the package
- this is what FileTree
���������� currently does
�� 2. one can build a tool that reconstructs the Monticello version
history from the git metadata
���������� making it possible to use "old" Monitcello tools to look at
the git repo - I believe that Thierry's
���������� GitFileTree takes this approach for metadata-less repositories
�� 3. One can build a new tool that presents the git metadata without
reconstructing the
���������� Monticello metadata at all. Note that by "embracing git", it
is possible to present revision
���������� history at the package level (current mcz techology) as well
as the class and method level -
���������� which is what I do in tODE
The above workflow can be accomplished whether or not Monticello
metadata is present, however, if one does not make an effort to
preserve the revision history then at the end of your workflow the
Monticello metadata is lost.
If one takes the pains to preserve the Monticello metadata before
committing to the git repository and the metadata is updated with
each commit during the git lifetime, then the full metadata will be
present at the end ...
This I think is the crux of the discussion.
There are a number of alternate schemes that can be used to preserve
the metadata through this scenario:
�� 1. (current FileTree implementation) store the Monticello meta
data in git and update on
���������� every git commit
�� 2. duplicate the existing Monticello revision history by
committing in order all of the
���������� package ancestors and arrange for a way to reconstruct
Monticello metadata from git
���������� meta data
�� 3. (variant of 1) store the original monticello meta data in a
file, do not update on every commit
���������� but arrange for a way to reconstruct Monticello metadata from
git meta data and graft onto
���������� original Monticello meta data for use in mcz repository --- on
demand
�� 4. ????
Option 3 seems to be a good compromise solution and perhaps is the
approach that should be adopted moving forward ... we get to
preserver Monticello metadata while avoiding the messy commit
conflicts for git while providing a (somewhat) seamless path for a
package to migrate back into the mcz repository world ... if we
somehow incorporate the SHA of the commit and the github/bitbucket
url into the revision history, then it would be possible to perform
a 3 way merge involving two mcz package versions and common ancestor
that is only present in git ...
You've hit the nail on the head, but I think that option 3 above
gives us a way to avoid losing the Monticello metadata without
incurring a hit for a packages lifetime while in git ...
A package that starts its life in git will have an empty Monticello
metadata and a package that never makes it's way into an mcz
repository will not incur per commit penalties ...
and sabotage was never my intent ...
Haha, from the very beginning back in 2012, I understood that there
would be fear and resistance to change and anger and joy and
excitement but it was not clear when if ever we'd reach point where
a resolution for this "problem" was needed: either no one would be
interested or everyone would be interested or ???
I really think that option 3 is going to be the best compromise
moving forward - there is some implementation work that will be
required but I really think option 3 gives you (and frankly me) a
way to preserve the Monticello revision history for packages that
make their way back and forth between lifetimes in git and
Monticello repositories.
Eliot, I appreciate the fact that you demanded a better solution!
Dale