LiveCode repo name change fixer

Mark Waddingham mark at livecode.com
Thu Sep 10 03:34:07 EDT 2015


On 2015-09-10 05:31, Monte Goulding wrote:
>> On 10 Sep 2015, at 1:06 pm, Richard Gaskin 
>> <ambassador at fourthworld.com> wrote:
>> 
>> > I also saw the email notice on the fact that we can expect a lot more
>> > submodules in the future to deal with widgets. Not something I'm
>> > looking forward to.

I'm not sure we are looking forward to it either. We're getting to the 
point where we could start to split up various things into separate, 
independently maintainable pieces and as such it would probably make 
sense for them to inhabit their own repository however submodules do 
cause headaches at times for the reason Monte outlines below.

>> What are your concerns?
> 
> The issue with submodules is just a workflow thing. You’ve got to
> remember to commit changes to the submodule before you commit to the
> main repo because the commit on the main repo contains a reference to
> the commit on the submodule. In general submodules that you don’t
> maintain and just update every now and then are a godsend. Submodules
> in the one project that share branch names etc like the ide and
> thirdparty ones in the livecode repo not so much… I’m actually not all
> that sure why these were made submodules in the first place. I’m
> fairly sure we discussed it back when it was all originally pushed but
> it I can’t remember…

I think there are various discussions about it from wayback when.

The prebuilt submodule (now defunct) was to prevent large binary blobs 
that would change periodically taking up repo space (remember that 
github history is perpetual - it monotonically increases in size). 
Eventually my original intention happened with this when we developed 7 
- the submodule got replaced by scripts which downloaded the necessary 
blobs.

The ide submodule was due to the fact we could not use a git work-flow 
in IDE components because of their binary nature. Indeed, for a long 
while, the IDE submodule was a facisimile of an SVN repository which was 
used to do a standard lock-update-unlock flow. Obviously, since then, 
we've get scriptified stacks and a reasonable process of editing the 
binary stacks via using PRs in GitHub so it is much better integrated. 
We periodically have discussions about folding it in to the main repo.

The thirdpary submodule, again, was meant to be a temporary thing - 
again with the point of view of not eternally inflating the size of the 
repository with stuff which is derived or comes from elsewhere. My 
original plan was that all our third-party library uses would be 
downloaded from source, and then patched with our changes at the point 
of build. The only thing stored in the LiveCode repo would then be the 
patches, and not code which is actually maintained elsewhere. 
Unfortunately, however, this is one project which we have never gotten 
around to (but it did come up again recently - so it hasn't been 
forgotten).

One option, in the future, if we move to a multi-submodule arrangement 
is to make it flat and not a tree - which I think is the main problem 
(if you mutate a leaf, you have to then change all ancestors of said 
leaf). Instead, we'll have a core repository which points to a list of 
all projects (as which are needed to build the product. We can use 
scripts to make the links at the top-level symbolic rather than hash 
based which would solve the having to update the parent problem. If this 
is then combined with a 'thirdparty libraries is download link + patch' 
type arrangement it should mean that all projects are leaves and don't 
require nested submodules. However, this is probably a way off, a fair 
bit more thought needs to go into it as we divide things up into 
separate extensions.

Warmest Regards,

Mark.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps




More information about the use-livecode mailing list