While I believe you considered this already - so the issue with uploading these c files all the time, is that the total repo, including any clones of it made, would grow in size very fast, because a great number of versions of those .c files would be in the version history.

Does Git perhaps have some kind of "permanent unlimited erase" feature where you can actually remove file commits completely (from all the repo incl its history)? I'd suppose it does.

Though, for this to be meaningful, Git would require to propagate those erases (to github from your local machine and so on) on git pull/push. This could or could not exist, at least it's by far not an unreasonable feature to exist, I suppose?

If all this exists, you could make a script that would go through all versions of the entire git repo and erase all of those .c files in that fashion, except for the very most recent version (so cloners always get the newest set) and those that belong to very major Gambit versions (like, N.N.0:s or so) (so people can always have old Gambit versions readily compilable).

Checked on #git, they said this can be done with git log filename and filter-branch  , and said there's clear examples in man filter-branch .

Brgds

Den 12 april 2012 22:46 skrev Marc Feeley <feeley@iro.umontreal.ca>:
I have been looking into the issue of bootstrapping Gambit directly from the sources on github.  Currently this is not possible.  The latest .tar.gz release (obtained from the Gambit wiki) needs to be built, and then the latest commits must be pulled and compiled in a final "make".  This process confuses novice users and is generally a pain.  It would be much better if a clone of the github repository gave all the required pieces (as is the case for most other projects on github).

This "direct bootstrap" is not possible because the .c files generated by the Gambit compiler from the .scm files when compiling itself are not stored on the github repository.  The generated .c files are very large and including all versions would make the repository considerably larger.

I am proposing to include the generated .c files in the repo, but only commit changes occasionally.  Basically, every time a new release would be published (i.e. a .tar.gz with a new version number) the new .c files would be committed to the repository.

I have put on github a mockup of the sources to demonstrate how this would work.  The repo is at https://github.com/feeley/test9 .

To build the mockup from github, start with these commands:

 git clone git@github.com:feeley/test9.git
 cd test9
 make bootstrap

This will create the gsc-boot executable (the Gambit compiler which can be used to recompile the Gambit .scm files from scratch should they be changed, or new versions pulled from the repo).  Now we can remove the (possibly stale) generated .c files obtained from the repo and regenerate the correct .c files with the new gsc-boot:

 make bootclean
 make

When commiting changes to the repo, two make targets can be used:

 make commit

when the generated .c files should not be added to the repository, and

 make commit-major

when the generated .c files should be added to the repository (typically when a new release is created).

I would be interested in having some feedback on this change before going ahead with them on the actual Gambit source code.

Marc

_______________________________________________
Gambit-list mailing list
Gambit-list@iro.umontreal.ca
https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list