Copy old PCB or start new?

I have PCBs with 2x PICs plus 20ish other components, but I need to make more slightly modified PCBs,

Should I copy the old PCB and change the components that I need to do, plus re-route tracks to avoid many VIAs or should I start again and hope for better looking PCBs?

Cheers, Camerart.

I would commit the design to Git, create a branch, make my changes to the schematic, and then bring the new net list into PCBnew. I have done this many times. It preserves the original and allows the freedom to make small or significant changes without risk to the old design.


Project Save As… . seems to only make a copy of the .PrPcb file and it still points back to the original schematic and layout files. I would like to make a full copy of all files in the project, change all of the file names with a suffix to match the new project’s name, and then treat that as a project not related to thing it was copied from.

I’ve tried a couple of variations, but so far this seems like the simplest way:

  1. copy the directory in windows
  2. from windows rename the .PrPcb , topmost schematic sheet, and layout files.
  3. open the project and do Add Existing to project… for the renamed files
  4. Use Rename Child Sheet on each sheet symbol for the remaining schematic files
  5. (Hit project compile each time a rename is done to get things in the hierarchy)

When you create a New Project there’s an option to select a Project Template but I didn’t find an explanation about how to create them and/or if the template can actually be a complete project vs. a collection of schematic and layout templates.

Is there a better way to do this?

Added after original post:

I do not copy the History, Previews, Logs, or Output directories.

I’m not sure about the .Harness files yet. It seems to automatically generate new ones but I have not experimented to see if it needs to have the old ones to do that. (In general the workings of Harnesses are still a mystery to me so don’t take anything I say about it as useful).
Despite the above seemingly working I now do have a case where it seems likePCB is confused about component classes. I will open a separate thread on that once I understand it.

Hi S and I,
I tried I’s method, and I think it’s working, I’ll check that everything is connected, and report back, thanks.

Is there a better way to do this?

I think @sidprice has a more robust idea. Putting your project into some sort of VCS is a much better loger term solution. It allows you to experiment fairly freely with your design but always get back to your previous state. If you make good, meaningful commit messages you get excellent documentation for your project too. Easy to share and see where things have changed.

Down the line you will be looking back for your project to modify for some other plan and you will find a directory called ‘my_project_v7’ and not have the faintest idea about what was special about this version… (BT,DT)


@John_Pateman, after reading your comment about git I discovered that git is already installed on my computer. I never used it before. Now you have motivated me to use it for keeping track of and documenting my kicad projects. So I am going to learn how to use it for my kicad projects by reading and playing with it on my computer.

My first impression is that I can make a repository for one kicad project, and ultimately have multiple projects, one for each kicad project OR
I can make one repository and store multiple different kicad projects by name into that one repository. Am I wrong?

I am thinking of choosing the first alternative and keeping the repository in the same kicad project directory kicad uses, to keep things as simple as possible.

Is this a good choice, or not?

1 Like

With git, one project per repository is better due to it’s issue with large files. This way, you may need to think ahead where all of your projects going to be, and how may they would interact in the future. The smaller size of each files in your project the better git work.

With SVN, you can put every projects into a single repository without any issue. Also, you don’t have to think ahead to structure where all your projects should be. Only problem is branching (try new thing out, and remove it from the history) is not as fun as git.

It quite nice when you can use git-svn. It seem to overcome all the downside I listed.

All of this are base on my experience of using them.

I agree with you that individual repos per project is probably a cleaner solution but don’t think that size is a major consideration in this regard. If you are sensible about what you include you are unlikely to run into size problems. GitHub will limit your repo size to 1GB but that isn’t a limit to Git, per se. Anyhow, what are you going to be including in a repo that is going to push that limit? The Kicad project files are usually only a few kB.

1 Like

Each git commit on my Windows machine for my project taking 43 second+ for 300kB of change! I hope that only happen to me.

As a person that doesn’t know what a COMMIT or GIT is, I simply copied the existing complete project, renamed all of the file names to the new design names, and it worked.
Thanks for all of the replies.

If you don’t want to get into the whole git/versioning thing, that is fine but I would suggest that you keep a short, plain text file in your new project and make a simple list of what you change - even in very broad terms. When you come back to your project in a couple of years you won’t remember what and why you changed something and what version does what.

1 Like

Great idea, @John_Pateman
Guess what? I now do BOTH.

I just looked up some 10 year old Kicad files, and I had titled them with a small description. e,g, I made some wire following buggies Mk 1 to 3 on the file I named them ‘say’ 3 and on the buggy I also wrote three, so the files match up.

When I tried to open them I got a report ‘made wuth an old version of Kicad, update?’ Say yes, and they mostly correct themselves.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.