FrameworX 10.1 introduces comprehensive Git integration capabilities, enabling version control, collaboration, and DevOps workflows while maintaining the security and performance of a centralized database architecture. This hybrid approach allows teams to leverage modern development practices without compromising industrial-grade reliability.
Access: Solution → Export (Git Export settings)
Parent Page: DevOps & Version Control (Reference)
Git Integration & Export (Reference)
FrameworX 10.1 introduces comprehensive Git integration capabilities, enabling version control, collaboration, and DevOps workflows while maintaining the security and performance of a centralized database architecture. This hybrid approach allows teams to leverage modern development practices without compromising industrial-grade reliability.
Access: Solution → Export (Git Export settings)
Parent Page: DevOps & Version Control (Reference)
Git Export Architecture
Hybrid Configuration Management
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 |
Git-Friendly JSON Format
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 |
Configuration
Enabling Git Export
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 |
Export Modes
Automatic Export:
- Monitors configuration changes
- Exports on version increment
- Batches rapid changes
- Background operation
Manual Export:
- Export All - Complete solution
- Export Module - Selected module
- Export Current - Active object
Directory Structure
Standard Layout
solution-root/
??? Solution/
? ??? SolutionCategories.json
? ??? SolutionSettings.json
??? Displays/
? ??? Layouts/
? ? ??? MainPage.json
? ? ??? Overview.json
? ??? Images/
? ??? Logo.json
? ??? Logo.png
??? Scripts/
? ??? Tasks/
? ? ??? ServerStartup.json
? ??? Classes/
? ? ??? DataProcessor.json
? ??? ScriptsExpressions.json
??? UNS/
? ??? UnsTags.json
? ??? UserTypes/
? ??? CustomTemplate.json
??? Alarms/
? ??? AlarmsGlobalSettings.json
? ??? AlarmsItems.json
??? .gitignore
JSON File Format
Standard Structure
json
{
"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
}
}
Export Categories
Individual Object Files:
- Script Tasks and Classes
- Display Layouts
- SQL Queries
- Report Definitions
- Symbol Definitions
Table Export Files:
- Tags (UNS)
- Alarm Items
- Device Points
- Security Settings
- Expressions
Security & Sensitive Data
Data Protection
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 |
Environment Variables
json
{
"DatabaseConnection": "${DB_CONNECTION}",
"EmailServer": "${SMTP_SERVER}",
"HistorianPath": "${HISTORIAN_PATH}"
}
Variables resolved at runtime for environment-specific deployment.
Git Workflow
Recommended Process
- Initialize Repository
bash
cd /path/to/solution git init git remote add origin https://github.com/company/scada-config.git
- Development Branch
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
- Code Review
- Create pull request
- Team reviews changes
- Merge to main branch
Branching Strategy
main
??? develop
? ??? feature/new-screens
? ??? feature/alarm-updates
? ??? feature/script-optimization
??? hotfix/critical-alarm-fix
??? release/v2.1
Best Practices
What to Export
? Export to Git:
- Application configuration
- Display definitions
- Script code
- Alarm rules
- Report templates
- Static settings
? Keep in Database Only:
- Runtime tag values
- Historical data
- User passwords
- Session information
- Temporary data
- High-frequency updates
Commit Guidelines
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" |
Performance
Export Performance
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 |
Optimization Tips
- Use selective export for large systems
- Enable compression for repository
- Implement .gitignore for generated files
- Schedule exports during low activity
- Use shallow clones for CI/CD
CI/CD Integration
Example GitHub Actions
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"
Advanced Features
Custom Export Filters
csharp
// ExportFilter.cs
public bool ShouldExport(ConfigObject obj)
{
// Skip temporary objects
if (obj.Name.StartsWith("_temp")) return false;
// Skip test configs in production
if (Environment == "Production" &&
obj.Name.Contains("test")) return false;
return true;
}
Post-Export Hooks
batch
# post-export.bat
cd %EXPORT_DIR%
git add .
git commit -m "Auto-export: %DATE% %TIME%"
git push origin develop
Troubleshooting
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 |
Migration Guide
From Database Systems
- Enable Git export in FrameworX
- Export complete configuration
- Initialize Git repository
- Establish branching strategy
- Train team on Git workflows
From File-Based Systems
- Import existing files to FrameworX
- Verify data integrity
- Enable selective Git export
- Maintain file organization
- Implement security improvements
See Also
- DevOps & Version Control (Reference) - Parent section
- Solution Export (Reference) - Export interface
- Track Changes Tools (Reference) - Change tracking
- Version Control Integration Guide - Detailed workflows