Hi Tom,
> On Jan 4, 2020, at 10:13 PM, Tom Benedict <[email protected]> wrote:
>
> How large is your structure? I ask, because our structure has around a
> million lines of code and probably 15,000 forms and when I’ve tried exporting
> under 17r5 it takes many minutes.
Roughly 150,000 lines of source code and probably about 300 or so forms.
A lot has happened between 17r5 and 18, so it might be worth trying again.
Also, the Export structure command gives you a lot of control over how
exporting is done. It would be worth it for you to test various aspects
independently and see what the bottleneck is and report back to 4D.
At the end of this message I have included the export script I'm using. When
the temporary 17 copy is converted to 18, this method is executed with PROCESS
4D TAGS to export the structure for the master branch version control.
> Also, my attempt at setting up a git repository ran into similar performance
> issues, only hours instead of minutes. I lost interest at that point.
Is this with git directly from the command line or using a GUI tool? I have
seen many performance and other issues using a GUI tool that go away when I
execute the same operations from the command line.
>
>> You can continue to make version 17 changes, export, and then merge into
>> your 18 branch. At some point in the future, all your conversion issues will
>> be resolved and you can promote the 18 branch as master and deploy with 4D
>> 18.
>
> This sounds almost like magic. When you “merge” how do you know what code
> takes priority? Do you have to examine each method and form?
Merging is why you use git for this task. It automatically identifies any
conflicting changes between the branches and allows you to decide what to keep.
I'm doing maintenance/bug fixes in 17 and new features in version 18. There are
rarely any merge conflicts. If you modify the same methods in both branches,
you'll spend a lot more time dealing with merge conflicts.
> BTW, did you have prior experience with git? I’m asking because my past
> attempts to get a conceptual understanding of git and version control have
> had limited success. I found the concepts and terminology overwhelming and
> couldn't map the git workflow to my 4D workflow at all. I’m looking forward
> to more posts like yours which provides ‘just enough’ git to get started.
I have been using git with 4D since 2014 and with other environments for much
longer. With 4D it has been mostly for version management and change tracking.
4D 18 changes things and makes development like the rest of the world; you can
manage multiple branches and integrate work from multiple (remote) developers.
John DeSoi, Ph.D.
<!--#4DCODE
//Exports the current structure in the current folder for version control and
project mode testing.
//$1 - (optional) Log results to the event log for standard output.
C_BOOLEAN($1;$eventLog)
C_OBJECT($oOption;$oResult)
C_TEXT($path;$projectFolder;$out)
If (Count parameters>=1)
$eventLog:=$1
End if
$path:=Get 4D folder(Database folder)
$projectFolder:=$path+"Project"
$oOption:=New object
$oOption.makeProject:=True
//Have to specify all if any are false.
$oOption.filter:=New object(\
"buildSettings";True;\
"catalog";True;\
"databaseMethods";True;\
"dataPath";False;\
"directory";True;\
"filters";True;\
"folders";True;\
"forms";True;\
"lists";True;\
"menus";True;\
"methodPreferences";True;\
"pageFormat";True;\
"pictures";False;\
"projectMethods";True;\
"resources";False;\
"settings";True;\
"styleSheets";True;\
"tips";True;\
"trash";False;\
"triggerMethods";True;\
"windowPositions";True)
If (Test path name($projectFolder)>=0)
ALERT("Project path exists - "+$projectFolder)
Else
$oResult:=Export structure file($path;$oOption)
$out:=JSON Stringify($oResult;*)
If ($eventLog)
LOG EVENT(Into system standard outputs;$out;Information message)
Else
ALERT($out)
End if
End if
-->
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************