{"thread":{"id":"40988","subject":"Questions about GIT","startedAt":"2015-12-14T10:48:58Z","lastAt":"2015-12-14T16:22:33Z","messageCount":2,"participants":["Jack McLear","Stefan Beller"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"274369","messageId":"HE1PR09MB044194E1689C460D0B1C7D06B1ED0@HE1PR09MB0441.eurprd09.prod.outlook.com","threadId":"40988","inReplyTo":null,"subject":"Questions about GIT","fromName":"Jack McLear","fromEmail":"mclear7@hotmail.co.uk","sentAt":"2015-12-14T10:48:58Z","receivedAt":"2015-12-14T10:48:58Z","isPatch":false,"sender":{"key":"mclear7@hotmail.co.uk","avatar":null},"body":"Hi\n\nI’ve recently been made aware of GIT and had a few questions.\nI’m currently working on creating a middleware between FORAN (a CAD system) and Teamcenter.\n\nDo you know if GIT would work between the two?\n\nWe’re currently using a Centralised version control system.\n\nSo to check my understanding, using GIT to create a distributed version control would have the following benefits\nThe CAD designer who has design a pump assembly for example could create an additional branch and “plays around” with the pump to make improvements without editing the main pump branch?\nCould more than one user create independent branches?\nIf both users wanted to merge their independent branch with the main branch, what would happen? Would one take priority?\n\nIs that the main benefit in terms of a CAD system, the branching ability?\n\nThanks\n\nJack\n\n"},{"id":"274383","messageId":"CAGZ79kYhBh0qLXR3GAFSGKtO3ZLb008G+59tdJbT==kSabiHCg@mail.gmail.com","threadId":"40988","inReplyTo":"HE1PR09MB044194E1689C460D0B1C7D06B1ED0@HE1PR09MB0441.eurprd09.prod.outlook.com","subject":"Re: Questions about GIT","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2015-12-14T16:22:33Z","receivedAt":"2015-12-14T16:22:33Z","isPatch":false,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Mon, Dec 14, 2015 at 2:48 AM, Jack McLear <mclear7@hotmail.co.uk> wrote:\n> Hi\n>\n> I’ve recently been made aware of GIT and had a few questions.\n> I’m currently working on creating a middleware between FORAN (a CAD system) and Teamcenter.\n>\n> Do you know if GIT would work between the two?\n\nGit is designed to track any kind of contents, so yes, it will work\nwith FORAN and Teamcenter.\n\nHowever! Git is optimized for files which are text. Tracking binary\nfiles is not as pleasant\nas text files. (E.g.: There is no merge driver available, as any\nbinary file has a different format.\nAlso file sizes may be a concern)\n\n>\n> We’re currently using a Centralised version control system.\n\nYou may or may not want to change the workflow. Git as a distributed version\ncontrol system allows for more freedom w.r.t. workflows, but a\ncentralized workflow\nis supported just as well. See [1] for examples (Just a quick search,\nthere are many more\narticles out there covering workflows)\n\n[1] http://blog.endpoint.com/2014/05/git-workflows-that-work.html\n\n>\n> So to check my understanding, using GIT to create a distributed version control would have the following benefits\n> The CAD designer who has design a pump assembly for example could create an additional branch and “plays around” with the pump to make improvements without editing the main pump branch?\n\nBranches are cheap to create. Specially in Git. But other version\ncontrol systems also allow for\ncreation of branches. The big issue is the merging back to mainline.\nAnd in case you have binary\nfiles, which have been edited in both branches to merge, you're out of\nluck unless you\nwrite a merge driver yourself.\n\n> Could more than one user create independent branches?\n\nBranches are local. So everybody who has a copy of the repository can create\nbranches. Depending on the configuration of the server, people may or may not\npush new branches (or are only allowed to update existing ones).\n\n> If both users wanted to merge their independent branch with the main branch, what would happen? Would one take priority?\n\nIn case of text files, they just merge if they were edited at\ndifferent positions of the file (plus some margin for error). If they\nwere edited at the same position, you need to resolve the merge\nconflict manually.\nBinary files are not merged automatically as Git has no idea of binary\nfile formats. You need to provide your own merge driver[2].\n\n[2] https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html\nsee \"Defining a custom merge driver\"\n\n>\n> Is that the main benefit in terms of a CAD system, the branching ability?\n>\n> Thanks\n>\n> Jack\n>\n"}]}