Your step-by-step Altium videos are a great way to get started (or re-started for me). One subtle update, since making this video: The default branch for a new repository is now named main, instead of master. The command "git push origin master" is now "git push origin main".
As an embedded sw engineer, I usually work with git and that's why I used git with Altium in the traditional manner. Now I see great advantages in using GIT integrated in Altium (expecially to see differences between different commits) but serious problems could arise if two or more designers are working "simultaneously" on the same project. An example is shown when you try to push a commit involving files already modified by another designer: when you insist to push, there should be a command like "push -f" behind the Altium GUI to overcome the conflicts (not a clean and safe way to work). I think it would be better if every designer can work on his/her own branch and then compare the differences when it is needed to decide how to go on. I don't know wether it is possible to set different branches directly from Altium. SW engineers can use commands like "git merge" or "git rebase" to unify their branches but it could be a chaos or probably too difficult when working on hw designs, but it is just my opinion and I have no experience about that. Anyway Robert, another great video. Thank you very much!!!
Altium files are binary files, so these merge and rebase commands are not so easy to implement. This does not happen on Kicad or Eagle files as they are text based. Altium is not very friendly to git.
Hi Robert - excelent step-by-step tutorial. Good jub. When I use version control (not in Altiom, but in Visual Studio) in my projects it is very common situation with conflict changes. When I start to push my changes - the version control system always ask me to resolve conflicts before upload. If you go to 39:51 of your video - git says to you that push was rejected (attention: only push rejected, local commit was done success), becaose of your local branch is behind remote. It is means that you make chaneg in file that is older (not the latest version) than file on github server (remote - > internet version of files). After this action - git refresh local commit history and marge it with server one. So next time you make push - your project is up to date. To prevent this situation - After refreshing you nead: Commit -> Update project -> push changes.
@@RobertFeranec By the way - if you go to insights/network tab of your project - you'll see how actually cocnurent brances are marged on git github.com/robertferanec/youtube-28pins/network
Hi Robert, one more great video! Thanks! And I would just like to note, for people that don't want to use command line fot git, there are also a few nice apps with GUI to handle git interactions, commit, push e.t.c. which makes things a bit easier.
@@kushlavr It doesn't really make sense to wonder if they're compatible or not: SourceTree uses Git, Altium uses Git, GitHub Desktop uses Git. They all work the same way: they call Git commands. So yes of course, SourceTree should be 100% compatible with Altium. Exactly as you can use the Git command line in parallel with Git for Altium without breaking anything. You may be interested in some readings about compatibility between TortoiseSVN and Altium, which is exactly the same concern but for SVN: forum.live.altium.com/#posts/235981/731198
Hello, Robert. In AD19 Altium didnt support branches, but in AD20 it supports. You should use git gui instead altiums git, but it WORKS! I just tested it.
Nice video Robert. I've used git for a long time with Eagle. If two users make a change to the same document they create a "merge conflict". I noticed in Altium under the version control menu there is an option for "resolve conflicts". I'd be curious to see how well this works in Altium. In Eagle you can solve merge conflicts manually since the schematic/board files are XML text files. I think how easily merge conflicts can be resolved will determine how easy it is to use this with many users. Cheers
Love it dude! I'm not looking forward when I get off school and I want to keep using altium XD This isn't what I study but it is something I might do a minor in. I love it but it's too addictive! And thank you for this! I really needed a good way of keeping everything organized!
Here is a tip, a shortcut if you will. Instead of cloning the empty project and copy the project files from their original folder to the cloned copy, you can just navigate with git bash, or PowerShell, where the folder of the original project is and execute the following two commands: git init git remote add origin github.com/robertferanec/youtube-28pins.git The first command will create a local repository directly on the original folder so no copy-pasting is necessary. The second command will indicate this newly created repo the remote repository where "git push" is going to push to, (and where git pull is going to pull from). After this, then you just execute the git add and git commit as you just showed.
Hi Robert, thank you very much for sharing this type of content, you are a great teacher and you are helping me to evolve a lot in Altium, thank you very much.
Hi Robert, Genius! That is a great video ! Thanks you so much for the wonderful thing. I have used Gitlab for Altium PCB design, not sure what is difference between them, but Github looks cool stuff too !
Thank you alot robert !!! I wanted to know how to upload all of my integrated library files on github and retrieve them online using github instead of having alot of files on my PC
Thanks @Robert Feranec for this video. For those who are interested, version control under Altium Designer is also doable with SVN. It's my preferred choice because we can place exclusive locks on files to avoid conflicts (tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-locking.html). See how can you compare two Altium files with SVN: gotomation.info/2019/02/file-comparison-altium-designer/
Hi Robert. Firstly, thank you for the very informative video. I am looking into using this approach for our projects. This has enlightened me. One big (more general) question I still have, is the version/revision number in the documents and file names themselves (not Git versions). For example we start with a V1.0 and if there are schematic changes we move to V1.1, for PCB changes we go to V2.0. This is written throughout the documents and on the PCB. Question is do you manually rename the files and version text in the project files, when you make a new version, like the 1I1 in your filenames and revisions? (if you change to 1I2 for example). At the moment I copy and paste the file structure, and manually rename the file names and references in the project files to the new version, wondering if I still need to do that, to keep the versions separate and differentiate between the files and outputs of V1.0 and V2.0 for example. Thanks a lot, hope you can help :-)
Very interesting video Robert. I'm waiting for your video on Database :)... i have only a question: it can be possible to set in a similar way also a SVN repository directly from Altium Designer? In this case i see in Altium the SVN Design Repository. Let me know how do you think about.
The sad part about git in Altium is that Altium still doesn't support git-lfs (git addon for storing large binary files). If you're using git as is (without LFS) - you'll get ridiculously large repository (let's say your PcbDoc weights 15MB, then each commit with PcbDoc will add 15MB to repo size, same nightmare with IntLibs), and if you're using LFS (like me) - you can't commit directly from Altium, only with a separate tool like Sourcetree or git CLI. I hope that Altium 21 will have LFS support, it would be great relief :)
If Altium just used git cli for git accessing it would be as easy as exchanging the git.exe to get git-lfs support. edit : Altium uses libgit2 for git integration. So it is up to Altium to get git-lfs working.
Rigó Máté Zoltán possibly Altium will lack specific lfs commands in it’s workflow, but good point about external cli. At least most of the features must work
Thanks for the great video Robert. Can you do a video on trying out the new electronic design in Fusion 360? If it is nearly as good as altium, it could be a free ecad tool for enthusiasts and hobbyists.
Looking at the docs it seems Git integration started with Altium 2018. I'm on 2017 so I use git the 'vanilla' way ie. without using Altium's version control features, typing in git commands directly in a separate window. Even with recent versions I think using git from outside Altium may be easier, because we can re-use the same CLI or GUI-based interface to version both hardware and software projects.
Hey what if I dont want to accept the changes the other engineer pushed ? can We set up an admin that is responsible for the main branch and approved all the pull request?
Thank you very much for the video Robert, it's very useful for me but I have one question: what about my custom schematics and PCB components library (LibPkg/IntLib files) associeted to the projects? I just need to put at the repository and it will syncronized too?
Didn't work for me, couldn't push commits nor fetch new ones from others from within Altium. External updates were working fine. After lots of digging: The Altium git component still cannot push to non-bare repositories, while the regular CLI/GUI client can (we like a fully exposed working copy in our directories). Simple solution - move the thing to a bare repo and now everything works as expected...
Robert, thank you for lesson. Do you know how to place PCB revision number on overlay? E.g. : v.1.3 . And then after modify PCB this one will automaticaly incremented.
use project parameters - this can give you an idea how you can use it (you can use parameters in schematic, but also in PCB). It will not be automatically incremented, but you can easily change it in one place: ruclips.net/video/cD-iW0LNR9Q/видео.html
I have not tried that, but I have seen that kind of option there: www.altium.com/documentation/altium-designer/pcb-pnl-collaboratecomparemergecollaborate-compare-and-merge-ad
I am sure. Just, I know, that in some versions where bugs and it didn't work well. PS: Please, if possible, you can try it and let me know (you can simply clone the repository I created in this video, you will immediately see if it is working).
@@RobertFeranec Hey Robert. I'm sorry for the delayed reply. I've created my own repo and copied your project inside. It seems that the version control with git is working great also in AD18.1.6 . Gitlink --> github.com/kifantidis/demo_ADgit
@@RobertFeranec Hello Robert, i see you work with SVN. I use them on my Offline Altium 10 and it work very well. I guess git will work with older Versions too. Try it Brijesh. May you has to chosen the rigth SVN Version.
Great video. I would love to know how you handle file naming and folder structures while using Git in Altium. I watched your video ruclips.net/video/0Cz0Xht50zg/видео.html on the tip for keeping version names in the altium file names. it appears that your "lower level" files do not have versions in their file names, e.g. myPcb_v1.PcbDoc and myPcb_v2.pcbdoc. but what happens when i go from V1i2 to V1i3, or when i go from V1 to V2? i believe Git will not see that the project file or PCB file is the same, it will see it as a new file created and it will highlight it to add to the repo. i can see the repository growing over time. (in our software and firmware teams they just put a version tag into git and if we need to revert to an older version, we just Git Pull that specific version) How do you handle these things in PCB design? I see in this video that you have a Version 1 and Version 2 that show up in Storage Manager. how did you create those, and how do those relate to your folder structure? Can you do a video that shows more about how you handle those kinds of changes? Thank you so much!
Your step-by-step Altium videos are a great way to get started (or re-started for me). One subtle update, since making this video: The default branch for a new repository is now named main, instead of master. The command "git push origin master" is now "git push origin main".
This is a very knowledgable tutorial. Thank you Robert.
As an embedded sw engineer, I usually work with git and that's why I used git with Altium in the traditional manner. Now I see great advantages in using GIT integrated in Altium (expecially to see differences between different commits) but serious problems could arise if two or more designers are working "simultaneously" on the same project. An example is shown when you try to push a commit involving files already modified by another designer: when you insist to push, there should be a command like "push -f" behind the Altium GUI to overcome the conflicts (not a clean and safe way to work). I think it would be better if every designer can work on his/her own branch and then compare the differences when it is needed to decide how to go on. I don't know wether it is possible to set different branches directly from Altium. SW engineers can use commands like "git merge" or "git rebase" to unify their branches but it could be a chaos or probably too difficult when working on hw designs, but it is just my opinion and I have no experience about that. Anyway Robert, another great video. Thank you very much!!!
Altium files are binary files, so these merge and rebase commands are not so easy to implement. This does not happen on Kicad or Eagle files as they are text based. Altium is not very friendly to git.
Hi Robert - excelent step-by-step tutorial. Good jub.
When I use version control (not in Altiom, but in Visual Studio) in my projects it is very common situation with conflict changes. When I start to push my changes - the version control system always ask me to resolve conflicts before upload.
If you go to 39:51 of your video - git says to you that push was rejected (attention: only push rejected, local commit was done success), becaose of your local branch is behind remote.
It is means that you make chaneg in file that is older (not the latest version) than file on github server (remote - > internet version of files).
After this action - git refresh local commit history and marge it with server one. So next time you make push - your project is up to date.
To prevent this situation - After refreshing you nead: Commit -> Update project -> push changes.
Thank you Vitalij! I thought it is something with branch being behind.
@@RobertFeranec By the way - if you go to insights/network tab of your project - you'll see how actually cocnurent brances are marged on git
github.com/robertferanec/youtube-28pins/network
You sir, saved my day. I could not get it working properly following other instructions. Your video was very well explained. Thank you so much :)
OMG. You are making these videos wholeheartedly. Also love the "exaggerating emotional expressions", it's just so rich. You are a saint in EE Robert.
Thank you Xiao
Hi Robert, one more great video! Thanks!
And I would just like to note, for people that don't want to use command line fot git, there are also a few nice apps with GUI to handle git interactions, commit, push e.t.c. which makes things a bit easier.
Yes. For ex: GitHub Desktop
Thank you Giannis. Yes, there is a nice GUI for git, even for github: Github Desktop: desktop.github.com/
I'd personally recommand SourceTree from Atlassian, which is way more complete than GitHub Desktop.
@@justinmassiot does it compatible with version cont ol implementation in Altium?
@@kushlavr It doesn't really make sense to wonder if they're compatible or not: SourceTree uses Git, Altium uses Git, GitHub Desktop uses Git. They all work the same way: they call Git commands.
So yes of course, SourceTree should be 100% compatible with Altium. Exactly as you can use the Git command line in parallel with Git for Altium without breaking anything.
You may be interested in some readings about compatibility between TortoiseSVN and Altium, which is exactly the same concern but for SVN: forum.live.altium.com/#posts/235981/731198
Hello, Robert. In AD19 Altium didnt support branches, but in AD20 it supports. You should use git gui instead altiums git, but it WORKS! I just tested it.
Interesting. I will have a look at branches. Thanks for the tip!
Again a great video Robert! Thank you so much. Regards from Buenos Aires, Argentina
Nice video Robert. I've used git for a long time with Eagle. If two users make a change to the same document they create a "merge conflict". I noticed in Altium under the version control menu there is an option for "resolve conflicts". I'd be curious to see how well this works in Altium. In Eagle you can solve merge conflicts manually since the schematic/board files are XML text files. I think how easily merge conflicts can be resolved will determine how easy it is to use this with many users. Cheers
Yes you did it Robert. I am a new Git user but i tried. you make me easer thank you a lot :-)
Thankyou for explaining so easily.
Love it dude! I'm not looking forward when I get off school and I want to keep using altium XD
This isn't what I study but it is something I might do a minor in. I love it but it's too addictive!
And thank you for this! I really needed a good way of keeping everything organized!
Here is a tip, a shortcut if you will.
Instead of cloning the empty project and copy the project files from their original folder to the cloned copy, you can just navigate with git bash, or PowerShell, where the folder of the original project is and execute the following two commands:
git init
git remote add origin github.com/robertferanec/youtube-28pins.git
The first command will create a local repository directly on the original folder so no copy-pasting is necessary. The second command will indicate this newly created repo the remote repository where "git push" is going to push to, (and where git pull is going to pull from). After this, then you just execute the git add and git commit as you just showed.
This is a great tutorial. Thank you Robert.
Hi Robert, thank you very much for sharing this type of content, you are a great teacher and you are helping me to evolve a lot in Altium, thank you very much.
Thank you Bruno
very nice ! works just fine on my computer. Didn't try this with my team but i'm sure it will work. Tks !
Hi Robert, Genius! That is a great video ! Thanks you so much for the wonderful thing. I have used Gitlab for Altium PCB design, not sure what is difference between them, but Github looks cool stuff too !
Wow this in new to me and very helpful - Thanks
Thank you alot robert !!! I wanted to know how to upload all of my integrated library files on github and retrieve them online using github instead of having alot of files on my PC
Thanks Robert, very well explained.
Thanks @Robert Feranec for this video.
For those who are interested, version control under Altium Designer is also doable with SVN. It's my preferred choice because we can place exclusive locks on files to avoid conflicts (tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-locking.html).
See how can you compare two Altium files with SVN: gotomation.info/2019/02/file-comparison-altium-designer/
Can you please guide regarding central libraries if I don't want to use Altium 365. What is good for it and how can we setup it inside a company?
Thank you! Keep like!
Thanks for the video. VERY WELL EXPLAINED !!
Thank you very much Gabriel
Wonderful tutorial.
Thank you Bhagath
how do you get the revision number to not be that crazy long string of characters for when it gets pulled into the title block?
Hi Robert. Firstly, thank you for the very informative video. I am looking into using this approach for our projects. This has enlightened me. One big (more general) question I still have, is the version/revision number in the documents and file names themselves (not Git versions). For example we start with a V1.0 and if there are schematic changes we move to V1.1, for PCB changes we go to V2.0. This is written throughout the documents and on the PCB.
Question is do you manually rename the files and version text in the project files, when you make a new version, like the 1I1 in your filenames and revisions? (if you change to 1I2 for example).
At the moment I copy and paste the file structure, and manually rename the file names and references in the project files to the new version, wondering if I still need to do that, to keep the versions separate and differentiate between the files and outputs of V1.0 and V2.0 for example.
Thanks a lot, hope you can help :-)
that doesn not rev up automatically\
Great video!
Very interesting video Robert. I'm waiting for your video on Database :)... i have only a question: it can be possible to set in a similar way also a SVN repository directly from Altium Designer? In this case i see in Altium the SVN Design Repository. Let me know how do you think about.
You can set SVN, but I din't want to because I wanted to use git on internet (I do not really know the companies hosting SVN, github was ok for me).
The sad part about git in Altium is that Altium still doesn't support git-lfs (git addon for storing large binary files). If you're using git as is (without LFS) - you'll get ridiculously large repository (let's say your PcbDoc weights 15MB, then each commit with PcbDoc will add 15MB to repo size, same nightmare with IntLibs), and if you're using LFS (like me) - you can't commit directly from Altium, only with a separate tool like Sourcetree or git CLI.
I hope that Altium 21 will have LFS support, it would be great relief :)
If Altium just used git cli for git accessing it would be as easy as exchanging the git.exe to get git-lfs support.
edit : Altium uses libgit2 for git integration. So it is up to Altium to get git-lfs working.
Rigó Máté Zoltán possibly Altium will lack specific lfs commands in it’s workflow, but good point about external cli. At least most of the features must work
Thanks for the great video Robert. Can you do a video on trying out the new electronic design in Fusion 360? If it is nearly as good as altium, it could be a free ecad tool for enthusiasts and hobbyists.
Just use KiCAD, seriously.
Either KiCAD or Altium. Depending on your budget and your customers.
@@tillorrly1128 I was looking at it from the point of view that Fusion could do the whole product design under one tool.
Looking at the docs it seems Git integration started with Altium 2018. I'm on 2017 so I use git the 'vanilla' way ie. without using Altium's version control features, typing in git commands directly in a separate window.
Even with recent versions I think using git from outside Altium may be easier, because we can re-use the same CLI or GUI-based interface to version both hardware and software projects.
I was also using git command line for a while on my HW projects .. until I found out it can be easily used directly from Altium.
Hey what if I dont want to accept the changes the other engineer pushed ? can We set up an admin that is responsible for the main branch and approved all the pull request?
Our company use internal networs,the computers is encrypted,how could we implement version control,we use PLM but I find it not convienient.
Thank you very much for the video Robert, it's very useful for me but I have one question: what about my custom schematics and PCB components library (LibPkg/IntLib files) associeted to the projects? I just need to put at the repository and it will syncronized too?
no
Didn't work for me, couldn't push commits nor fetch new ones from others from within Altium. External updates were working fine.
After lots of digging: The Altium git component still cannot push to non-bare repositories, while the regular CLI/GUI client can (we like a fully exposed working copy in our directories). Simple solution - move the thing to a bare repo and now everything works as expected...
I'm adding 3d body for components footprints , then I'm press 3 buttom 3d body doesn't showing silk layer only show how to fix 😿
0 dislikes. Amazing
Someone just placed dislike :)
@@RobertFeranec it must be eagle users :)
@@fieryfirevivin :D
How about the database library used with Github? Can you give a little more guidance on this? thank you very much!
It was my plan to make a video about it .. but it was not ideal. Currently experimenting with libraries through Altium 365
Robert, thank you for lesson.
Do you know how to place PCB revision number on overlay? E.g. : v.1.3 . And then after modify PCB this one will automaticaly incremented.
use project parameters - this can give you an idea how you can use it (you can use parameters in schematic, but also in PCB). It will not be automatically incremented, but you can easily change it in one place: ruclips.net/video/cD-iW0LNR9Q/видео.html
Genius
What we would do without you...
I can't find IMX8M Project in your website fedevel
Hi Bob, it is a custom project, it is not public. I only have permissions to use it for my videos.
@@RobertFeranec Thank you for your reply
What about merging of two changed files? Is that possible?
I have not tried that, but I have seen that kind of option there: www.altium.com/documentation/altium-designer/pcb-pnl-collaboratecomparemergecollaborate-compare-and-merge-ad
i love it
Thank you nand singh
May i ask, is this possible for older versions ? I have AD18 .
I am sure. Just, I know, that in some versions where bugs and it didn't work well. PS: Please, if possible, you can try it and let me know (you can simply clone the repository I created in this video, you will immediately see if it is working).
@@RobertFeranec Hey Robert. I'm sorry for the delayed reply. I've created my own repo and copied your project inside. It seems that the version control with git is working great also in AD18.1.6 . Gitlink --> github.com/kifantidis/demo_ADgit
@@Jindraxx20 Awesome!
where can i get updated version of altium 19 or 20 ? I am using altium 14, I want to update ...
Brijesh, you may need to talk to your local Altium supplier.
@@RobertFeranec Hello Robert, i see you work with SVN. I use them on my Offline Altium 10 and it work very well. I guess git will work with older Versions too. Try it Brijesh. May you has to chosen the rigth SVN Version.
@@RobertFeranec I updated my software to AD 20.0.13
If they are binary files the never ever add them to git only if you have lsf but still non ideal.
should've been a 5 min video
Great video.
I would love to know how you handle file naming and folder structures while using Git in Altium.
I watched your video ruclips.net/video/0Cz0Xht50zg/видео.html on the tip for keeping version names in the altium file names.
it appears that your "lower level" files do not have versions in their file names, e.g. myPcb_v1.PcbDoc and myPcb_v2.pcbdoc.
but what happens when i go from V1i2 to V1i3, or when i go from V1 to V2?
i believe Git will not see that the project file or PCB file is the same, it will see it as a new file created and it will highlight it to add to the repo.
i can see the repository growing over time.
(in our software and firmware teams they just put a version tag into git and if we need to revert to an older version, we just Git Pull that specific version)
How do you handle these things in PCB design?
I see in this video that you have a Version 1 and Version 2 that show up in Storage Manager. how did you create those, and how do those relate to your folder structure?
Can you do a video that shows more about how you handle those kinds of changes?
Thank you so much!
from ukraine?