« first day (2467 days earlier)      last day (46 days later) » 

12:01 AM
RELOAD!
[Minesweeper] Games Played: 139, Bombs Used: 83, Moves Performed: 19997, New Users: 9
 
 
18 hours later…
5:36 PM
@mansellan we just dealt with a tricky of issue stemming from the way VBA modules are exported from the host when using .SaveAsText. We had some edge cases where source files would show bizarre changes and it was due to the diff tool guessing the wrong encoding.
What we ended up doing was taking that output and converting the encoding to UTF-8 before it's checked in to source control. We had to pull the current codepage at export time and use that in the encoder as the source. This avoids ambiguity about what the system codepage was at export and failures to detect the encoding by git\diff\merge\editors.
I'm not sure how RD handles exports but it looks to me like it's not changing the export format at all.
 
I don't think we can safely do so as we wouldn't have the encoding information when importing.
we can infer the encoding used at export time but then we have to store that metadata somehow for future imports on another system. No that doesn't matter if we use UTF-8. Nevermind.
 
We are importing using the system encoding at import time to convert the UTF-8 to the current codepage.
The export and import are mirror operations
 
#NotEnoughCaffeine
OASIS SVN has an option to convert the encoding to UTF8 as well, presumably to avoid this kind of issues.
 
LoL. I keep seeing OASIS being mentioned. I've never used it but I believe the open source project I am working on is just following in their footsteps.
 
it's only for Access
 
5:43 PM
We are likely to all run in to the same problems.
 
Access is the odd man out in that it has some semblance of support for SCC compared ot other Office VBA hosts
 
The lessons learned can be useful, is my point. Looking at how to version control Access, you can do similar steps in any host.
With RD, for example
 
Curious, does that software handle the stuff that are not part of the code but rather the ACCDB file itself?
example, database properties or conditional compilation arguments?
those are problematic for SCC
 
Yeah, we got it to rebuild an ACCDB from source files
 
even with the conditional compilation arguments?
 
5:46 PM
It works fairly well. We have a test DB that we pass around. We build it from scratch
I'm not going to say it does everything 100%, it's a work in progress
Small user base
 
Cool. It's those non-code stuff that really make it annoying.
In OASIS' case, those get stuffed in a XML file which is then applied to the corresponding properties.
 
We have used XML and JSON
right now I think it defaults to all JSON
 
cool
 
If you have an access project you should try it out. See what comes out. Push export and then push build and see if you get the same DB back
It will often cut the size of the DB on disk in half.
 
oh yeah I am aware of that bug.
BTW, how does it track changes?
 
5:50 PM
It doesn't. I use git
It's just an export and compiler
 
> This is largely achieved through the Fast Save option which only exports the changed files.
That implies tracking changes.
 
Yeah, he started using SHA1 hashes
Sorry, I didn't know that's what you were referring to
They are working on some git integration right now. I'm not involved in that part much
 
Interesting. I'm wondering how the SHA1 hash gets calculated quickly without having to export the file in order to calculate the SHA1 hash.
If you're exporting the file in order to calculate SHA1 hash, you're kind of digging a hole to see whether you can dig a hole.
 
proj.VBComponents.CodeModule
Looks like he is using the VBE access to pull the code
It's found in GetCodeModuleHash
 
ah yes, similar to what RD does. My concerns, however is that it won't catch any non-code changes
e.g. you moved a control a pixel to the right on the form
in order to track that, you'd have to export the file by which then you've already put in the effort anyway.
 
6:01 PM
Well, it's different for each object type. In forms I'm seeing:
`If (.GetHash <> VCSIndex.DefaultDevModeHash) And .HasData Then`
 
Cool.
 
So it is hashing something
ouch, hold on, it does export the file before that. Looks like it just skips converting to JSON
For most object it's just running Application.SaveAsText on everything
 
oh wait. you're saying this add-in converts the output of SaveAsText into a json?
 
yes, it appears to
But there are different methods for different things
 
Hmm. Interesting. Why, though?
 
6:06 PM
That's only for acForm, acReport
 
Don't get me wrong - I think the format that's used by SaveAsText is fugly and it has lot of stupid stuff that makes it less than ideal for SCC but I've also worried that if you change the structure (even just to sort the list of properties alphabetically for example) it could have unintended consequence.
 
I know that they have had to strip out certain things that cause error on import
 
good ol' printer data!
 
that was one
 
Yes. It's a big bane and the most inane thing to put in SCC
It's one thing if the report was configured to use a specific printer but that is rare. Even for reports configured to use default printer, WE. MUST. EXPORT. ALL. THE. PRINTER. DATA. FOR. THE. SAKE. OF. THE. HUMANITY!!1!
<Narrator>No, we don't.</Narrator>
 
6:09 PM
Yeah, it doesn't make sense for any project that is moved to different locations\companies\dimensional rifts.
Those printers won't exist
 
well back in 90s it was probably inconceivable that someone would take their computer and be in a different network.
IDK. They made a huge mistake right there.
 
Or that someone would distribute or sell an Access program! Horsefeathers!
 
IKR?!? That'd be crazy! Preposterous!
 
 
5 hours later…
11:10 PM
 

« first day (2467 days earlier)      last day (46 days later) »