On Apr 17, 2017, at 8:26 PM, The Tick <the.t...@gmx.com> wrote:
> 
> On 4/17/2017 9:11 PM, Ross Berteig wrote:
>> Try to avoid
>> preserving a version number as part of the folder names in the workspace
>> even if your upstream does that to you.
> 
> So I've goofed up by putting freetype-2.7.1/ and others into the repository?
> 
> I guess I had assumed that I could just add, say, freetype-2.8 some day and 
> change the master makefile as appropriate while making any other changes that 
> might be necessary to accommodate the new library version.

Certainly you *can* do this, but it gives the very problem you started the 
thread with, which is that you end up with duplicate copies of all files in the 
depended-upon library, even if those files have not changed.

If you unpack the library into a freetype/ directory and update to new versions 
in place, not only do unchanged files not take more space, Fossil’s delta 
compression is likely to store the files that *do* change in far less space.

One other thing you might want to consider is simplifying the depended-upon 
project’s build system.

Ideally, you’d merge the depended-upon project’s build rules into your existing 
build system to avoid the Recursive Make Considered Harmful problems:

    http://aegis.sourceforge.net/auug97.pdf

That takes extra work, so if you’re unwilling to do that, then at least 
consider reverting the upstream project’s build system to a more “core 
developer” state.  If the upstream project uses Autotools, for example, you’d 
check in only configure.ac and Makefile.am, not any of the files that are built 
from them: configure, aclocal, etc.  The upstream project may have a bootstrap 
or autogen.sh type of script which rebuilds these generated files; call that 
from *your* top-level build system when you bootstrap *it*.

> I guess I'd need a readme or something to tell what the current version is?

Most third-party libraries contains a ChangeLog or VERSION or NEWS type file 
which gives version info.  Your checkin message committing the new version 
should also contain this, as should your parent project’s ChangeLog file.

> stuff gets lost in all the commit messages.

That’s one of many reasons why you should distill your commit messages into a 
ChangeLog as part of every release: to document such things.  My rule for 
writing ChangeLog entries is that everything that could affect behavior the end 
user can see goes into the ChangeLog.

The ChangeLog should be much shorter than the output of “fossil timeline” 
because you’ll be removing all the checkins for behind-the-scenes changes, as 
well as frequently distilling multiple detailed checkin messages into a single 
brief user-focused ChangeLog entry.

That gets you a file you can trivially search afterwards.  I end up going back 
to my ChangeLogs roughly monthly to answer questions like “When was feature Foo 
added?”
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to