Skip to main content

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

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
# 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:

  1. main - Production-ready code
  2. develop - Integration branch for features
  3. 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

  1. Create focused PRs - Each PR should address one feature or fix
  2. Write clear descriptions - Explain what changes and why
  3. Include test evidence - Document that builds complete successfully
  4. 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:

  1. Open the file in a text editor
  2. Choose the correct version or combine changes
  3. Remove conflict markers
  4. 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

  1. 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
  2. Use Git LFS for large binary files if needed

  3. Keep build artifacts out of version control - Use CI/CD to generate them

Splitting Large Projects

If your project becomes unwieldy:

  1. Create separate repositories for distinct subsystems
  2. 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 .editorconfig to 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