Skip to Content

Does PowerDesigner work with Git?

Apr 16 at 03:37 PM


avatar image

I've started at a site which is using PD16.1, but no repository. There is talk of using Git for version control, so does the version of PD we're using work with Git? I found this link below, which suggests it does:

I've only ever used PD's in-built repository for version control, not Git. Would be interested to see of others' experiences with Git.


10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

George McGeachie Apr 17 at 07:59 AM

GIT can version files for you, if that's all you want to do. Here are a few things that the repository can do, but I don't think GIT can support:

  • traceability between objects in different models - e.g. CDM Data Item - CDM Attribute - LDM Attribute - XML Attribute or PDM column
  • extending impact and lineage analysis, beyond the models you have open in the workspace
  • automated sharing of common models and PowerDesigner resources (such as model extensions and user profiles) with all repository users
  • automated application of customised user interfaces and general preferences to selected users
  • validation of names and codes against terms in the Glossary
  • managing name-code conversions via the Glossary
  • permissions at package level, within a model
  • provide search and navigation of models, and the links between them, via a web portal
  • the ability to provide comments on model objects, via a web portal
  • depending on your licence, the ability to edit EA and BPM models via a web portal

GIT would be OK if you're using PowerDesigner to create models for projects, perhaps LDM-PDM pairs, though I think you'd have problems with reuse, such as finding an existing "Customer Account" entity that you know must already exist.

In the above, I've assumed that GIT has no knowledge of the content of a PowerDesigner model, treating as an XML document with unknown content.

10 |10000 characters needed characters left characters exceeded
Antony Hall Apr 19 at 08:26 AM

Thanks, George. Some of the above list might be more important for us than others. I would also make the same assumption as you that Git is treating any PD model file purely as an XML document. One thing that I would expect Git to be able to do at the very least is for multiple users to work on the same PD file and check in changes, but how this would differ from the way it's done using PD's own repository is the question.

Show 2 Share
10 |10000 characters needed characters left characters exceeded

Don't let multiple people work on the model at the same time - GIT will not be able to understand the differences between the versions, and could screw up the model. It may just resort to overwriting the file every time it's checked in, which will be very frustrating:

  • User A and user B both check out the model - current version 1
  • User A changes "Client" to "Customer" in object names, checks in the model - GIT creates version 2
  • User B moves symbols around on a diagram, checks in the model - GIT creates version 3
  • User A checks out version 3, and screams "where are my changes?"
  • User A compares version 3 to version 2, GIT shows them the differences between two XML documents - user A tries to make sense of that, resorts to asking user B to remember what changes they made to the model, so user A can re-do them

Here's a worse scenario

  • User A and user B check out a PDM
  • User A makes a vital but minor change, checks model in to GIT, and the database is updated
  • User B makes non-vital changes, checks in the model - it no longer has the vital change

So, if you ARE using GIT, manage your check-in operations carefully. Always use PD's model merge to make sure the model you check in contains all the changes it needs to contain. Are your modellers organised enough to do that? :)


Food for thought! It would be good if somebody from SAP could comment on what the 'official' view of using PD and Git is, i.e. totally fine, OK with caveats, any missing functionality, etc.