[BLACKBOX] Version Control

From: [at]} <Aubrey.McIntosh{>
Date: Tue, 29 Dec 2009 17:58:19 -0600

----boundary-LibPST-iamunique-21713806_-_-
Content-type: text/plain

Oh, I am unfocused and this will ramble. Please feel free to skip.

I have a program, Gather, that I first coded many years ago. It reads
source, and understands the IMPORT assignment. I had thought it to be
a mature program, that the only wrinkles in using it were
documentation and user understanding issues.

I have developed a practice of keeping many versions of the source to
a program as I make changes, and only saving source when I have a
"clean" compile. I bump a minor version number when I work on a new
aspect. This may be very minor, such as changing the definition of 1
or 2 RECORDS and propagating the necessary work through the source.

In this practice, there may be many files as time goes by. Each of
these sources generates a binary of the same name, and all the sources
that import it remain unchanged as I work, possibly unloading many
modules then reloading them during debug.

This_01.Mod --> MODULE This; IMPORT That; END This.
This_02.Mod --> MODULE This; IMPORT That; TYPE T1*:INTEGER; END This.
This_03.Mod --> MODULE This; IMPORT That; TYPE T1*:LONGINT; END This.

So I went to use Gather in its intended purpose, to read a list of
source file names and then to produce the list of all necessary and
available sources in a correct compile order.

For a very discouraging moment, I thought I had found a very serious
bug in a program I thought was now part of the bedrock. I gave the
list of the versions I wanted, This_03.Mod, That_04.Mod. It sought
out the sources This.Mod, That.Mod, and not the versions. :-(

After much reading of the source, the documentation, and running the
example programs, I have decided that it actually is working as it
should, but that I have always had a subtle misunderstanding of how I
manage and document versions. The Gather program implies that when I
release a new minor version number, the IMPORT statement of my various
client programs should change, and the module name of the various
library modules should also change.

(*library config 1*) MODULE This; IMPORT That := That_01; END This.
(*library config 2*) MODULE This; IMPORT That := That_02; END This.
(*library item*) MODULE That_02; END That_02.

I have not gone back into my current project to make this so. I think
I am more discouraged than if my trusted program had actually been
badly broken. It means that I have to change a work practice to be
more clear headed. My thoughts are that this will all be more in the
"Oberon" tradition, because the source will actually statically
document the version that is in use. I am just rebelling in the same
way I did when I had to declare variables the first time I used a
Wirth language. I envision a directory that is really, really full of
source and binary files of different version numbers.

Well, it is a cold and rainy day, I am drinking coffee and pondering
the implications of all this. I'd love to have the wisdom of others
who have worked on large and evolving projects. I may (or not) go
change a lot of source files and see what I can see.





-- 
-- 
Aubrey McIntosh, Ph.D.
1502 Devon Circle
Austin TX 78723-1814
http://home.grandecom.net/~amcintosh/aubrey/Search/
----
To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy----boundary-LibPST-iamunique-21713806_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE9oLCBJIGFtIHVuZm9jdXNlZCBhbmQgdGhpcyB3
aWxsIHJhbWJsZS4gIFBsZWFzZSBmZWVsIGZyZWUgdG8gc2tpcC5ccGFyDQpccGFyDQpJIGhhdmUg
YSBwcm9ncmFtLCBHYXRoZXIsIHRoYXQgSSBmaXJzdCBjb2RlZCBtYW55IHllYXJzIGFnby4gIEl0
IHJlYWRzXHBhcg0Kc291cmNlLCBhbmQgdW5kZXJzdGFuZHMgdGhlIElNUE9SVCBhc3NpZ25tZW50
LiAgSSBoYWQgdGhvdWdodCBpdCB0byBiZVxwYXINCmEgbWF0dXJlIHByb2dyYW0sIHRoYXQgdGhl
IG9ubHkgd3JpbmtsZXMgaW4gdXNpbmcgaXQgd2VyZVxwYXINCmRvY3VtZW50YXRpb24gYW5kIHVz
ZXIgdW5kZXJzdGFuZGluZyBpc3N1ZXMuXHBhcg0KXHBhcg0KSSBoYXZlIGRldmVsb3BlZCBhIHBy
YWN0aWNlIG9mIGtlZXBpbmcgbWFueSB2ZXJzaW9ucyBvZiB0aGUgc291cmNlIHRvXHBhcg0KYSBw
cm9ncmFtIGFzIEkgbWFrZSBjaGFuZ2VzLCBhbmQgb25seSBzYXZpbmcgc291cmNlIHdoZW4gSSBo
YXZlIGFccGFyDQoiY2xlYW4iIGNvbXBpbGUuICBJIGJ1bXAgYSBtaW5vciB2ZXJzaW9uIG51bWJl
ciB3aGVuIEkgd29yayBvbiBhIG5ld1xwYXINCmFzcGVjdC4gIFRoaXMgbWF5IGJlIHZlcnkgbWlu
b3IsIHN1Y2ggYXMgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24gb2YgMVxwYXINCm9yIDIgUkVDT1JE
UyBhbmQgcHJvcGFnYXRpbmcgdGhlIG5lY2Vzc2FyeSB3b3JrIHRocm91Z2ggdGhlIHNvdXJjZS5c
cGFyDQpccGFyDQpJbiB0aGlzIHByYWN0aWNlLCB0aGVyZSBtYXkgYmUgbWFueSBmaWxlcyBhcyB0
aW1lIGdvZXMgYnkuICBFYWNoIG9mXHBhcg0KdGhlc2Ugc291cmNlcyBnZW5lcmF0ZXMgYSBiaW5h
cnkgb2YgdGhlIHNhbWUgbmFtZSwgYW5kIGFsbCB0aGUgc291cmNlc1xwYXINCnRoYXQgaW1wb3J0
IGl0IHJlbWFpbiB1bmNoYW5nZWQgYXMgSSB3b3JrLCBwb3NzaWJseSB1bmxvYWRpbmcgbWFueVxw
YXINCm1vZHVsZXMgdGhlbiByZWxvYWRpbmcgdGhlbSBkdXJpbmcgZGVidWcuXHBhcg0KXHBhcg0K
VGhpc18wMS5Nb2QgICAgLS0+IE1PRFVMRSBUaGlzOyBJTVBPUlQgVGhhdDsgRU5EIFRoaXMuXHBh
cg0KVGhpc18wMi5Nb2QgICAgLS0+IE1PRFVMRSBUaGlzOyBJTVBPUlQgVGhhdDsgVFlQRSBUMSo6
SU5URUdFUjsgRU5EIFRoaXMuXHBhcg0KVGhpc18wMy5Nb2QgICAgLS0+IE1PRFVMRSBUaGlzOyBJ
TVBPUlQgVGhhdDsgVFlQRSBUMSo6TE9OR0lOVDsgRU5EIFRoaXMuXHBhcg0KXHBhcg0KU28gSSB3
ZW50IHRvIHVzZSBHYXRoZXIgaW4gaXRzIGludGVuZGVkIHB1cnBvc2UsIHRvIHJlYWQgYSBsaXN0
IG9mXHBhcg0Kc291cmNlIGZpbGUgbmFtZXMgYW5kIHRoZW4gdG8gcHJvZHVjZSB0aGUgbGlzdCBv
ZiBhbGwgbmVjZXNzYXJ5IGFuZFxwYXINCmF2YWlsYWJsZSBzb3VyY2VzIGluIGEgY29ycmVjdCBj
b21waWxlIG9yZGVyLlxwYXINClxwYXINCkZvciBhIHZlcnkgZGlzY291cmFnaW5nIG1vbWVudCwg
SSB0aG91Z2h0IEkgaGFkIGZvdW5kIGEgdmVyeSBzZXJpb3VzXHBhcg0KYnVnIGluIGEgcHJvZ3Jh
bSBJIHRob3VnaHQgd2FzIG5vdyBwYXJ0IG9mIHRoZSBiZWRyb2NrLiAgSSBnYXZlIHRoZVxwYXIN
Cmxpc3Qgb2YgdGhlIHZlcnNpb25zIEkgd2FudGVkLCBUaGlzXzAzLk1vZCwgVGhhdF8wNC5Nb2Qu
ICBJdCBzb3VnaHRccGFyDQpvdXQgdGhlIHNvdXJjZXMgVGhpcy5Nb2QsIFRoYXQuTW9kLCBhbmQg
bm90IHRoZSB2ZXJzaW9ucy4gOi0oXHBhcg0KXHBhcg0KQWZ0ZXIgbXVjaCByZWFkaW5nIG9mIHRo
ZSBzb3VyY2UsIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgcnVubmluZyB0aGVccGFyDQpleGFtcGxl
IHByb2dyYW1zLCBJIGhhdmUgZGVjaWRlZCB0aGF0IGl0IGFjdHVhbGx5IGlzIHdvcmtpbmcgYXMg
aXRccGFyDQpzaG91bGQsIGJ1dCB0aGF0IEkgaGF2ZSBhbHdheXMgaGFkIGEgc3VidGxlIG1pc3Vu
ZGVyc3RhbmRpbmcgb2YgaG93IElccGFyDQptYW5hZ2UgYW5kIGRvY3VtZW50IHZlcnNpb25zLiAg
VGhlIEdhdGhlciBwcm9ncmFtIGltcGxpZXMgdGhhdCB3aGVuIElccGFyDQpyZWxlYXNlIGEgbmV3
IG1pbm9yIHZlcnNpb24gbnVtYmVyLCB0aGUgSU1QT1JUIHN0YXRlbWVudCBvZiBteSB2YXJpb3Vz
XHBhcg0KY2xpZW50IHByb2dyYW1zIHNob3VsZCBjaGFuZ2UsIGFuZCB0aGUgbW9kdWxlIG5hbWUg
b2YgdGhlIHZhcmlvdXNccGFyDQpsaWJyYXJ5IG1vZHVsZXMgc2hvdWxkIGFsc28gY2hhbmdlLlxw
YXINClxwYXINCigqbGlicmFyeSBjb25maWcgMSopIE1PRFVMRSBUaGlzOyBJTVBPUlQgVGhhdCA6
PSBUaGF0XzAxOyBFTkQgVGhpcy5ccGFyDQooKmxpYnJhcnkgY29uZmlnIDIqKSBNT0RVTEUgVGhp
czsgSU1QT1JUIFRoYXQgOj0gVGhhdF8wMjsgRU5EIFRoaXMuXHBhcg0KKCpsaWJyYXJ5IGl0ZW0q
KSBNT0RVTEUgVGhhdF8wMjsgRU5EIFRoYXRfMDIuXHBhcg0KXHBhcg0KSSBoYXZlIG5vdCBnb25l
IGJhY2sgaW50byBteSBjdXJyZW50IHByb2plY3QgdG8gbWFrZSB0aGlzIHNvLiAgSSB0aGlua1xw
YXINCkkgYW0gbW9yZSBkaXNjb3VyYWdlZCB0aGFuIGlmIG15IHRydXN0ZWQgcHJvZ3JhbSBoYWQg
YWN0dWFsbHkgYmVlblxwYXINCmJhZGx5IGJyb2tlbi4gIEl0IG1lYW5zIHRoYXQgSSBoYXZlIHRv
IGNoYW5nZSBhIHdvcmsgcHJhY3RpY2UgdG8gYmVccGFyDQptb3JlIGNsZWFyIGhlYWRlZC4gIE15
IHRob3VnaHRzIGFyZSB0aGF0IHRoaXMgd2lsbCBhbGwgYmUgbW9yZSBpbiB0aGVccGFyDQoiT2Jl
cm9uIiB0cmFkaXRpb24sIGJlY2F1c2UgdGhlIHNvdXJjZSB3aWxsIGFjdHVhbGx5IHN0YXRpY2Fs
bHlccGFyDQpkb2N1bWVudCB0aGUgdmVyc2lvbiB0aGF0IGlzIGluIHVzZS4gIEkgYW0ganVzdCBy
ZWJlbGxpbmcgaW4gdGhlIHNhbWVccGFyDQp3YXkgSSBkaWQgd2hlbiBJIGhhZCB0byBkZWNsYXJl
IHZhcmlhYmxlcyB0aGUgZmlyc3QgdGltZSBJIHVzZWQgYVxwYXINCldpcnRoIGxhbmd1YWdlLiAg
SSBlbnZpc2lvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIHJlYWxseSwgcmVhbGx5IGZ1bGwgb2ZccGFy
DQpzb3VyY2UgYW5kIGJpbmFyeSBmaWxlcyBvZiBkaWZmZXJlbnQgdmVyc2lvbiBudW1iZXJzLlxw
YXINClxwYXINCldlbGwsIGl0IGlzIGEgY29sZCBhbmQgcmFpbnkgZGF5LCBJIGFtIGRyaW5raW5n
IGNvZmZlZSBhbmQgcG9uZGVyaW5nXHBhcg0KdGhlIGltcGxpY2F0aW9ucyBvZiBhbGwgdGhpcy4g
IEknZCBsb3ZlIHRvIGhhdmUgdGhlIHdpc2RvbSBvZiBvdGhlcnNccGFyDQp3aG8gaGF2ZSB3b3Jr
ZWQgb24gbGFyZ2UgYW5kIGV2b2x2aW5nIHByb2plY3RzLiAgSSBtYXkgKG9yIG5vdCkgZ29ccGFy
DQpjaGFuZ2UgYSBsb3Qgb2Ygc291cmNlIGZpbGVzIGFuZCBzZWUgd2hhdCBJIGNhbiBzZWUuXHBh
cg0KXHBhcg0KXHBhcg0KXHBhcg0KXHBhcg0KXHBhcg0KLS0gXHBhcg0KLS0gXHBhcg0KQXVicmV5
IE1jSW50b3NoLCBQaC5ELlxwYXINCjE1MDIgRGV2b24gQ2lyY2xlXHBhcg0KQXVzdGluIFRYIDc4
NzIzLTE4MTRccGFyDQpodHRwOi8vaG9tZS5ncmFuZGVjb20ubmV0L35hbWNpbnRvc2gvYXVicmV5
L1NlYXJjaC9ccGFyDQpccGFyDQpccGFyDQotLS0tXHBhcg0KVG8gdW5zdWJzY3JpYmUsIHNlbmQg
YSBtZXNzYWdlIHdpdGggYm9keSAiU0lHTk9GRiBCTEFDS0JPWCIgdG8gTElTVFNFUlZATElTVFMu
T0JFUk9OLkNIfX0AIH1caA==
----boundary-LibPST-iamunique-21713806_-_---
Received on Wed Dec 30 2009 - 00:58:19 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:30:38 UTC