Hi all,
how do you guys store your FreeCAD project files? Does someone use a version control system like git?
BR Manuel
Yes, using git would make things a bit different.
FreeCAD is something in between. If you unzip the FreeCAD file it is well possible to diff the text files which will reduce the needed size enormously. And experts can well see from the diffs what has changed, if it's not too much.gflorent wrote: ↑Thu Jan 24, 2019 2:22 amEDIT: forgot to mention the binary file issue: git looses some of its interest when dealing with files that are not human readable. The FCStd format, for example, has this issue and the git databse may grow fast as it has to store the whole thing each time it is modified. But the versions are stored properly. In the context of CAD, human readable means 3D viewable,
That is exactly what i mean. What if a part is released for certain project and it have to edited for another project. I have to change only one / few part(s).
This never could happend with most cad systems. If we both work on a project (or the same) with a shared part. If i have the ability to change a part than you don’t. If you want another change we can talk with eachother so i fix you’re change too. Or you change it after me.gflorent wrote: ↑Thu Jan 24, 2019 2:22 amBut to come back to the topic, something like part-REV.B-04 might be difficult with git because it allows by design to have people working in parallel on the same file: so how do we define a version when you and I modify it at the same time? This can only happen when we merge our works into a single file or choose the best file from 2 options (yours or mine).
Code: Select all
product_a_assy
|_ subassy_1
|_ subassy_2
|_ subsubpart_1
|_ subsubpart_2
|_ subsubpart_3
|_ subassy_3
|_ subsubpart_4
|_ subsubpart_2
|_ subsubpart_5
|_ subpart_1
|_ subpart_2
|_ subpart_3
Code: Select all
product_b_assy
|_ subassy_1b
|_ subassy_2b
|_ subsubpart_1b
|_ subsubpart_2 – rev 1
|_ subsubpart_3 – rev 1
|_ subassy_3
|_ subsubpart_4
|_ subsubpart_2 – rev 1
|_ subsubpart_5
|_ subpart_1 – rev 1
|_ subpart_2
|_ subpart_3 – rev 1
Code: Select all
product_c_assy
|_ subassy_1
|_ subassy_2b
|_ subsubpart_1c
|_ subsubpart_2 – rev 2
|_ subsubpart_3 – rev 1
|_ subassy_3
|_ subsubpart_4 – rev 1
|_ subsubpart_2 – rev 2
|_ subsubpart_5
|_ subpart_1 – rev 1
|_ subpart_2 – rev 1
|_ subpart_3 – rev 2
Code: Select all
product_a_assy
|_ subassy_1
|_ subassy_2
|_ subsubpart_1
|_ subsubpart_2 – rev 1
|_ subsubpart_3 – rev 1
|_ subassy_3
|_ subsubpart_4
|_ subsubpart_2 – rev 1
|_ subsubpart_5
|_ subpart_1 – rev 1
|_ subpart_2
|_ subpart_3 – rev 1
I think you forgot that most mechanical engineers aren’t programmers. And a second commend a lot of CAD packages store binary because it speeds everything up.gflorent wrote: ↑Thu Jan 24, 2019 2:22 amforgot to mention the binary file issue: git looses some of its interest when dealing with files that are not human readable. The FCStd format, for example, has this issue and the git databse may grow fast as it has to store the whole thing each time it is modified. But the versions are stored properly. In the context of CAD, human readable means 3D viewable, with aids to diff and merge (you don't want to diff and merge the text inside a STEP file!). So, if many people work on the same project, CAD scripts that carry creation logic (and its is pretty easy to get the script equivalent of your GUI actions in FreeCAD (brilliant design !!)) are better stuff to store in git than big binaries.
The idea was to have something like bare freecad files, which are not zip but inside a folder. Then, git could easily manage everything.gflorent wrote: ↑Thu Jan 24, 2019 2:22 amEDIT: forgot to mention the binary file issue: git looses some of its interest when dealing with files that are not human readable. The FCStd format, for example, has this issue and the git databse may grow fast as it has to store the whole thing each time it is modified.
yes, this is a problem. But not from the git side. The only thing is how to merge the brep files correctly?gflorent wrote: ↑Thu Jan 24, 2019 2:22 amBut to come back to the topic, something like part-REV.B-04 might be difficult with git because it allows by design to have people working in parallel on the same file: so how do we define a version when you and I modify it at the same time? This can only happen when we merge our works into a single file or choose the best file from 2 options (yours or mine).
probbaly you want git submodules then.