I am an experienced circuit design engineer who is trying to learn KiCad.
I do not see any way to “save as” from within Eeschema? Rather than screw up whatever I already have, I would like to save my present schematic as something else so I can try something and go back in case it does not work. What is the best way to do that? Do I just need to close KiCad and use Windows explorer to copy the entire folder structure; then rename?
I am accustomed to going through a lot of files and filenames (In ExpressPCB for example.) I make a new one whenever I am unsure whether a major change is going to work. That makes it easy to go back to an earlier version if I do not like the results.
Best way: version control, create a new branch, test, reject or merge… e.g. with git.
Sorry I have heard of github but that is as far as that goes. I do not understand anything about it.
Where do I find these commands you mention?
I feel like a lot of the help material is written for programmers rather than circuit designers…
I think there was something of an information gap in the information which KiCad contains. I had not seen anything to tell me beforehand that GIT was a separate piece of downloadable software which I needed to install and which implements version control. Even the git introductory documentation quickly goes into terms such as SCM which mean nothing to me. It took some patience to find what git is and why I need it in understandable terms.
Anyway I installed the software and hoped for the best as I chose the defaults. This because I did not understand the choices being presented. Originally it seemed to indicate that it will be just command line interface. Although I was a dumb user of DOS 30 years ago, I hate to go back to it now. After installing GIT I see that it has a GUI.
The .pdf manual is 574 pages long…I think that is much more than the total instructions for all of KiCad that I have (??). That seems both good and bad. Should the manual for your tires be much bigger than the manual for the car they fit?
I will see how this goes. If it does not work for me I may try to use zip files to store and “hide” different versions.
Madworm: I find it difficult to believe that is the accepted way to save a schematic file under a different name. Are you serious? No “save as”?
The learning curve may seem a bit steep at first, but the very basic stuff is only a couple of commands, which is all you need. Best to watch a few introductory videos in youtube.
There is a GUI, yes. Personally I find it a waste of time for basic usage, but I’m a console junkie.
There is a save-as option, but it is thought to break the “project” concept. Therefore that option is not available when using the launcher application.
Thanks again, madworm. I will give it its due.
But I will say…when I read about what git is for…it sounds like group collaboration is really where it is aimed. But I am looking at using it only on my own computer, so I suspect that it might be a lot of overkill for me. But I will check it out further as you suggest before I make any rash decisions. Thanks for your further comment about “save as”. I can see that it gets complicated because the schematic and pcb files are not “stand alone” but rather linked via libraries and netlists.
I have done maybe 100 - 200 boards over many years using Express PCB which is a marvel of simplicity. That is why I like it. It is clean and light weight; almost completely free of bugs and is the opposite of “feature-itis”. But it can only give me schematics and boards, not gerber files. Copper pours are connected manually and without netlist intelligence, so the designer must be very careful to check all of those connections. The inner layers take copper pour only (traces on those layers are not available) and the total limit is 4 layer boards maximum so clearly I need to have something better.
Before learning about KiCad I tried some free pcb design software from DigiKey’s website. It might be good at some point but I decided that it is not yet “ready for prime time.” For example pad connections to copper pour is limited to 4 narrow “spokes” or thermal relief traces; woefully inadequate for high current power circuits so that alone made me give up on it.
Group collaboration is just one aspect of version control. I do that as well, but the main advantage for me is quasi unlimited history for a project with today’s storage prices.
If changes to a design are committed often (including meaningful comments), there is a high granularity as well, so rolling back one revision to undo one blunder doesn’t change “everything”.
If I had to do the same with zip-files, I’d go crazy.
One nice aspect of version control are the unique commit-ID numbers. I tend to put part of that number on boards right before I create the final gerber files for fabrication. Just using version numbers like “V1.04.a” etc. doesn’t work too well for me, as I tend to forget to change those, so I might end up with multiple different boards with the same number.
Hi, Bob. I understand how you feel about git. It can be quite complex. Like many others who use it, I understand only a fraction but it’s still very useful. The main commands I use are:
- git init: This starts a repository and creates an initial branch called master.
- git add [files]: This adds some files to the current branch of your repo. It essentially starts versioning on them.
- git commit: This commits any changes you’ve made to the current branch of your repo.
- git branch [branch_name]: This makes a new branch called branch_name where you can try new things.
- git checkout [branch_name]: This makes the new_branch active. Any files you change and commit will now go to this branch.
- git merge [branch_name]: This merges any changes you’ve made in branch_name back into the current branch. You typically checkout the master branch to make it current, and then merge the branch where you made your new changes provided you like them. If you don’t like the changes, then just delete the branch you made.
If you learn about these six commands, you’ll be able to do most of what you need to do.
For as a Windows user it just not give any meaning !
For example why would i ever need to merge ???
How do i know that [branch_name] is the newest one ???
And there do you enter the comments. I cant see how you do that.
I don’t quite understand your comment. Are you saying that I haven’t provided a full understanding of git with my less-than-300-word explanation? I quite agree! I was only trying to point out the few commands that are needed to make git useful.
Technically, you don’t need to merge. But most people keep their most-current, valid work in the master branch. If you make an acceptable change in some other branch, then you would probably want to merge those changes into your master branch so they would be included going forward.
The [branch_name] without any modifiers always refers to the most current version on that branch.
Comments for what? Or do you mean commands? You can enter git commands in a command window under Windows. Or you can install something like TortoiseGit if you want a GUI.
I am sorry @devbisme I just did hope that i this time did get it. Why file / project handling should be so hard
I hear that using GIT is so much 1. safer 2. better.
All i can see is all the things that can and will go wrong for me …
And i never had a problem with file save as since like for ever 1980 So easy to understand. It just works !
But the same time i realy want to learn to use kicad … but why make it so hard even just to make the first file.
If you just want to make copies of your files to save versions of your design, then you can still do that. In Windows, just ctrl+left_click and drag your schematic file someplace. Then you have a copy you can go back to. No need to use git or “File Save As…”
Having “File Save As” would maybe save a step in the process. But you would eventually end up with a bunch of copies of schematics with no way to tell what modifications they had, which ones worked and which didn’t, what sequence were they created in (time stamps may not work for this)…
I use git because it makes it easier for me to manage my design and I’m not continually throwing away the work I expended making modifications. And the insights from those modifications are still available for me to look at by browsing the repo.
But how you want to manage your own design flow is your choice. There’s no requirement to use git in order to use KiCad.
Each commit gives the user the option to add meaningful notes.
Merging to the master branch does not remove the changes to the files. Those are recorded in the repo. Those changes are still retained even if you remove the merged branch. You can always go back and see them or re-create the design at that point.
Is each line a branch ?
Is a commit the same as a merge ?
No commit is same as save. (but there ?)