Git Integration
This guide covers advanced Git workflows and team collaboration patterns for BimlStudio projects. For basic setup, see the Source Control Setup guide.
Project Structure Best Practices
Recommended Repository Layout
your-biml-project/
├── .gitignore
├── README.md
├── YourProject.mst # BimlStudio project file
├── Connections/ # Connection definitions
│ ├── Source.biml
│ └── Target.biml
├── Databases/ # Database schemas
│ ├── Staging.biml
│ └── DataWarehouse.biml
├── Tables/ # Table definitions
│ ├── Staging/
│ └── DataWarehouse/
├── Packages/ # SSIS packages
│ ├── Extract/
│ ├── Transform/
│ └── Load/
├── Scripts/ # BimlScript files
│ └── Automation/
└── Config/ # Build configurations
├── ddlConfig.bimlproj
└── etlConfig.bimlproj
Recommended .gitignore
# BimlStudio build output
/output/
/bin/
/obj/
# User-specific files
*.user
*.suo
*.mst.user
# Build artifacts
*.dtsx
*.ispac
*.dacpac
# Temporary files
*.tmp
*~
*.bak
# Visual Studio
.vs/
*.cache
# Logs
*.log
logs/
Branching Strategies
Feature Branch Workflow
Recommended for most teams:
- main - Production-ready code
- develop - Integration branch for features
- feature/* - Individual feature branches
# Create a feature branch
git checkout develop
git checkout -b feature/new-dimension-table
# Work on your changes...
# Commit and push
git add .
git commit -m "Add Customer dimension table"
git push -u origin feature/new-dimension-table
# Create a pull request for review
GitFlow for Larger Teams
For teams with formal release processes:
- main - Production releases
- develop - Development integration
- feature/* - New features
- release/* - Release preparation
- hotfix/* - Production fixes
Team Collaboration
Pull Request Guidelines
- Create focused PRs - Each PR should address one feature or fix
- Write clear descriptions - Explain what changes and why
- Include test evidence - Document that builds complete successfully
- Request appropriate reviewers - Include team members familiar with the area
Code Review Checklist for Biml
- Connection strings don't contain hardcoded credentials
- Table and column names follow naming conventions
- BimlScript doesn't have syntax errors
- Build configurations are updated if needed
- No duplicate asset definitions
Merge Conflict Resolution
Biml files are XML-based, making conflicts relatively straightforward to resolve:
<<<<<<< HEAD
<Table Name="Customer" SchemaName="dbo">
=======
<Table Name="DimCustomer" SchemaName="dim">
>>>>>>> feature/rename-tables
To resolve:
- Open the file in a text editor
- Choose the correct version or combine changes
- Remove conflict markers
- Test the build
CI/CD Integration
Azure DevOps Pipelines
Example azure-pipelines.yml:
trigger:
- main
- develop
pool:
vmImage: 'windows-latest'
steps:
- task: PowerShell@2
displayName: 'Build BimlStudio Project'
inputs:
targetType: 'inline'
script: |
# Run Hadron compiler
& "C:\Program Files\Varigence\BimlStudio\Hadron.exe" `
"$(Build.SourcesDirectory)\YourProject.mst" `
--buildConfiguration "$(Build.SourcesDirectory)\Config\etlConfig.bimlproj"
- task: PublishBuildArtifacts@1
displayName: 'Publish SSIS Packages'
inputs:
pathToPublish: '$(Build.SourcesDirectory)\output'
artifactName: 'SSISPackages'
GitHub Actions
Example .github/workflows/build.yml:
name: Build BimlStudio Project
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Build Project
shell: powershell
run: |
& "$env:ProgramFiles\Varigence\BimlStudio\Hadron.exe" `
"${{ github.workspace }}\YourProject.mst"
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: ssis-packages
path: output/
Working with Large Projects
Performance Tips
-
Use sparse checkout for very large repositories:
git clone --sparse https://github.com/your-org/your-biml-project.git
cd your-biml-project
git sparse-checkout set Packages/Extract -
Use Git LFS for large binary files if needed
-
Keep build artifacts out of version control - Use CI/CD to generate them
Splitting Large Projects
If your project becomes unwieldy:
- Create separate repositories for distinct subsystems
- Use Git submodules to link them:
git submodule add https://github.com/your-org/shared-connections.git Shared/Connections
Troubleshooting
Common Issues
Files showing as modified after opening in BimlStudio:
- BimlStudio may reformat XML - configure your editor to use consistent formatting
- Add
.editorconfigto enforce consistent line endings
Merge conflicts in .mst files:
- Project files are XML and can be manually merged
- When in doubt, rebuild the project file by removing and re-adding Biml files
Build failures after merge:
- Check for duplicate asset definitions (common after merging)
- Verify all referenced files exist
- Run a clean build
Next Steps
- Source Control Setup - Basic Git configuration
- Configuring Project Settings - Project options
- Using Configuration Files - Build configurations