Git Integration & Export (Reference): Comprehensive Git integration for
...
version control, collaboration, and DevOps workflows while maintaining
...
centralized database architecture
...
...
security.
Access: Solution → Export (Git Export settings)
Table of Contents maxLevel 2 minLevel 2 indent 10px exclude Steps style none
Component | Function | Location |
---|---|---|
Centralized Database | Single source of truth | .dbsln file |
Automatic Exports | Version control tracking | Git folder |
Selective Export | Configuration elements | JSON files |
Sensitive Data | Protected via placeholders | Database only |
Bidirectional Sync | Database ↔ Git repository | Automated |
...
Feature | Purpose | Benefit |
---|---|---|
Consistent |
...
Formatting | Clean diffs | Easy review |
Sorted Keys | Minimize conflicts | Better merging |
...
Array-based |
...
Tables | Efficient storage | Smaller files |
Metadata Preservation | Version tracking | Audit trail |
Binary Asset Handling | Separate files with checksums | Integrity |
...
Navigate to
...
Solution → Settings → Version Control:
Setting | Options | Default |
---|
...
Enable Git Export |
...
On/Off | Off | |
Export Mode | Automatic/Manual | Manual |
Export Trigger | On Version Change | - |
Export Delay | 5-60 seconds | 5 |
Target Directory | Path | Solution-Data\Git |
Automatic Export:
Manual Export:
Solution Root Directory:
json
When enabled, FrameworX monitors configuration changes and automatically exports modified objects to Git-compatible JSON files.
? Enable Automatic Export
Export Trigger: On Version Change
Export Delay: 5 seconds (batch rapid changes)
Target Directory: C:\Projects\MyScada\GitRepo
Export entire solution or specific modules on-demand:
solution-root/
??? Solution/
? ??? SolutionCategories.json
? ??? SolutionSettings.json
??? Displays/
? ??? Layouts/
? ? ??? MainPage.json
? ? ??? Overview.json
? ??? Images/
? ? ??? Logo.json
? ? ??? Logo.png
? ??? DisplaysLocalization.json
??? Scripts/
? ??? Tasks/
? ? ??? ServerStartup.json
? ??? Classes/
? ? ??? DataProcessor.json
? ??? ScriptsExpressions.json
??? UNS/
? ??? UnsTags.json
? ??? UserTypes/
? ??? CustomTemplate.json
??? Alarms/
? ??? AlarmsGlobalSettings.json
? ??? AlarmsItems.json
??? .gitignore
...
{
"ExportInfo": {
"ObjectType": "ScriptsTasks",
"TableVersionID": 6,
"SolutionVersionID": 245,
"ExportDate": "2025-08-23T10:30:00Z",
"ExportUser": "john.doe"
},
"Header": {
// Object metadata from table columns
},
"Body": {
// Object content or table rows
}
}
...
Individual Object Files
...
:
...
Table Export Files
...
:
...
Data Type | Handling | Storage |
---|---|---|
Passwords | Never exported | Database only |
Connection Strings | Environment placeholders | ${DB_CONNECTION} |
API Keys | Vault references | Secure storage |
Encrypted Values | Not exported | Database only |
json
{
"DatabaseConnection": "${DB_CONNECTION}",
"EmailServer": "${SMTP_SERVER}",
"HistorianPath": "${HISTORIAN_PATH}"
}
Variables resolved at runtime for environment-specific deployment.
bash
...
cd /path/to/solution
git init
git remote add origin https://github.com/company/scada-config.git
...
...
Initial Commit
git add .
git commit -m "Initial FrameworX configuration export"
git push -u origin main
Development Workflow
...
bash
git checkout -b feature/new-alarm-logic
...
# Make changes in FrameworX
...
git add .
git commit -m "Add
...
temperature
...
monitoring for
...
Reactor-
...
3"
git push origin feature/new-alarm-logic
...
...
...
...
...
...
FrameworX supports environment-specific configurations through placeholder substitution:
{
"DatabaseConnection": "${DB_CONNECTION}",
"EmailServer": "${SMTP_SERVER}",
"HistorianPath": "${HISTORIAN_PATH}"
}
Environment variables are resolved at runtime, allowing the same configuration to work across development, staging, and production.
...
Main Branches:
Feature Branches:
Maintenance Branches:
Branch Hierarchy:
...
...
Recommended Git branching model:
...
...
...
Write clear, descriptive commit messages:
...
Good | Bad |
---|---|
"Add |
...
temperature |
...
monitoring |
...
for |
...
Reactor-3 |
...
" | "Updated stuff" |
"Fix |
...
alarm |
...
delay |
...
calculation |
...
in |
...
Tank-Level |
...
" | "Changes" |
...
"Implement new batch report template" | "Friday work" |
...
Export not triggering automatically
Large file sizes
Merge conflicts
Define which objects to export:
// ExportFilter.cs
public bool ShouldExport(ConfigObject obj)
{
// Skip temporary objects
if (obj.Name.StartsWith("_temp")) return false;
// Skip test configurations in production
if (Environment == "Production" &&
obj.Name.Contains("test")) return false;
return true;
}
Execute custom actions after export:
# post-export.bat
cd %EXPORT_DIR%
git add .
git commit -m "Auto-export: %DATE% %TIME%"
git push origin develop
FrameworX validates imported configurations:
// Export entire solution
FrameworX.Git.ExportSolution(targetPath);
// Export specific module
FrameworX.Git.ExportModule("Scripts", targetPath);
// Export current object
FrameworX.Git.ExportObject(currentObject, targetPath);
<GitExport>
<Enabled>true</Enabled>
<AutoExport>true</AutoExport>
<ExportPath>C:\GitRepo</ExportPath>
<ExportDelay>5000</ExportDelay>
<IncludeModules>
<Module>Scripts</Module>
<Module>Displays</Module>
<Module>Alarms</Module>
</IncludeModules>
</GitExport>
...
Configuration Size | Export Time | File Count | Total Size |
---|---|---|---|
Small ( |
...
<100 objects) |
...
<1 sec | 50-100 |
...
<1 MB | |||
Medium (1,000 objects) | 3-5 sec | 200-500 | 5-10 MB |
Large (10,000 objects) | 15-20 sec | 1,000+ | 50-100 MB |
Enterprise (50,000+) | 60-90 sec | 5,000+ | 500+ MB |
...
...
...
...
...
...
yaml
name: Validate FrameworX Configuration
on:
pull_request:
branches: [ main, develop ]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Validate JSON Schema
run: |
for file in $(find . -name "*.json"); do
python validate_schema.py $file
done
- name: Check Tag Naming Convention
run: python check_naming.py ./UNS/UnsTags.json
- name: Verify No Credentials
run: |
! grep -r "password\|credential\|secret" --include="*.json"
...
Issue | Cause | Solution |
---|---|---|
Export not triggering | Automatic export disabled | Enable in settings |
Large file sizes | Many objects | Use selective export |
Merge conflicts | Concurrent edits | Use branches |
Missing exports | Permission issues | Check directory access |
Sensitive data exposed | Wrong configuration | Review export filters |
Page Tree | ||
---|---|---|
|
...
...