Skip to content

How we use git

Definitions of entities

Client: an organisation that is asking Power Partners to create a dashboard for them. ex: SuperTrends, Transport de Rese, Heinrich Brandmeldetechnik, … 

Order: one offer that has been made by Power Partners (in the form of a contract). This corresponds to an “issue” of type "Order" in Planio, ex: for SuperTrends the “Strategy Room” or the “Multi language and Synonym” project. For Hendrich the “Marketing Dashboard” or the “KPIs”. An Order is an incremental change to the client artefacts, e.g. a change to the Power BI Reports.

Git repository: There is a single repository per client.

Where to keep your local repositories

Never place git repositories inside OneDrive

Do not clone repositories into your OneDrive folder (e.g. Documents, Desktop, or anything under C:\Users\<YourUserName>\OneDrive...). Git and OneDrive both track and sync file changes, which means everything is synced twice and the two mechanisms interfere with each other. Typical problems:

  • OneDrive's "Free up space" / Files On-Demand feature removes local file contents, which can corrupt the .git folder and break the repository.
  • Sync conflicts create duplicate files (e.g. file-DESKTOP-ABC123.md) that confuse git.
  • File locks from the OneDrive sync client cause git commands to fail intermittently.
  • Large repositories waste OneDrive storage and slow down syncing for everything else.

Git already backs up your work: everything you commit and push is safe on the remote. OneDrive adds no protection, only problems.

Our standard location

Keep all repositories in a GitHub folder directly inside your personal user folder, i.e. outside of OneDrive:

C:\Users\<YourUserName>\GitHub
    client-a
    client-b
    ...

Set-up: step by step

  1. Create the folder, e.g. in Explorer or in a terminal:

    mkdir C:\Users\<YourUserName>\GitHub
    
  2. Clone each repository into it:

github-desktop-local-git-path.png

  1. Open the repository from the new location in your editor (e.g. VS Code: File → Open Folder…), and update any pinned/recent shortcuts so you don't accidentally keep working in an old copy.

Already have repositories inside OneDrive? Migrate them

  1. Close all applications that have files from the repository open (VS Code, Power BI Desktop, etc.).
  2. Make sure everything is committed and pushed. Check visually in github desktop, or use in a terminal git status.
  3. In GitHub Desktop, remove all your projects (right-click, Remove).
  4. Delete your old GitHub folder using Shift + Delete. If asked by OneDrive, confirm that you want to delete the folder in the server, too.
  5. Clone the projects to the new folder, entering the correct Local path C:\Users\<UserName>\GitHub. You only need to set this once. You can lazy-clone the projects, as you need them.

Folder Structure

We have the following folder structure, for each client repository:

code
    power bi
    al
    sql
    etc.
data
docs

Solutions

In case of big clients with many assets, it is recommended to split the repository into multiple Solutions, on the top level, i.e.

sales
    code
        power bi
        al
        sql
        etc.
    data
    docs
production
    code
        power bi
        al
        sql
        etc.
    data
    docs

Code

This folder contains the code assets. On the first level, we splict by technology (Power BI, BC AL, etc.).

Data

This folder contains data files that are or were important for the project, e.g. master data, legacy Excel files, etc.

Docs

This folder contains the *.md files that document the solution.

Branches

We are currently not using branches and always commit to the main branch.

Conflicts

Working on the same solution at the same time might cause some conflicts of versioning and changes made to the files. This section will highlight a few conflicts possible and propose solutions to solve them.

Working on the same *.pbix

Conflict

When working at the same time on the Dashboard without taking the other’s person changes into consideration, we will run into problem (2 ≠ versions). Unfortunately, *.pbix files are binary files. Git doesn’t handle conflict resolution with this type of files.

Solving Conflicts

The only way to handle that problem is to talk with the person who did the changes at the same time and copy his/her/its changes to the file you have modified.

Working on the same Azure function

Most of the time this should be handled by git. But if two people changed the same line of code, then the conflict should be handled in git itself (manual changes). This is the real advantage of git.