X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=+CLT/muWqJEND2uAOF0/Y/PhdyTkW8oUY0mpT4W3dPc=; b=WOfuHk3xnzA3y2FJP9bEKvfrUY/yOhwnkpx4N85vSaHgCVZkK3NWaKb0KSvz3sOAue kUQmXQxSf76mfA+4KvEn5JeSL5zdspsb6f1WBV321DpcNrS3MsKunfB929wJPxRkLlby VBnNMDcbyregzN4ls805BJkeLUjeFlcwdxlzxWTLXCu+92Q6tso4XI+1dV5/+b3TEbSq tpyETHMkdnlqNRE/1BXwubScPwDVAQtVpdM+3pVGRYoKolb/UhmVP96vJgtTk3i1bgBu 0zApNKIxpt2dVV9NbyDza1SW+eLDY02btNHKXtcAzOGME7jLtQbqzk48+1B40mDP9RLN 2I3g== MIME-Version: 1.0 In-Reply-To: <878v7uv4gl.fsf@gmail.com> References: <87wqvhd4tw DOT fsf AT gmail DOT com> <20130115013756 DOT 9917 DOT qmail AT stuge DOT se> <50F4E4D1 DOT 3010802 AT ecosensory DOT com> <878v7uv4gl DOT fsf AT gmail DOT com> Date: Tue, 15 Jan 2013 10:51:47 -0800 Message-ID: Subject: Re: [geda-user] geda-skeleton-project: Lowering the cost of a starting a gEDA project From: Ouabache Designworks To: Ben Gamari Cc: geda-user AT delorie DOT com Content-Type: multipart/alternative; boundary=f46d043bd988f5053b04d35840ae Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --f46d043bd988f5053b04d35840ae Content-Type: text/plain; charset=ISO-8859-1 On Tue, Jan 15, 2013 at 7:41 AM, Ben Gamari wrote: > > This is what version control systems are for. Tags and branches exist > precisely for this reason. In the case of git, one can handle the case > of multiple source repositories with git-submodule. Other modern VCSes > have similar facilities. There are much better tools than cp(1) for > dealing with archival and versioning. > > Cheers, > > - Ben > > Version control systems were designed by software engineers for software engineers. A lot of hardware design now resembles software programming so we can use a lot of their tools BUT not all of them. Hardware design is more complex than software programming and not all software tools will work. Version control is one of them. A programmer knows that all .log and .obj files are generated so it is easy to set up git to ignore all of them. Cleaning them out between runs is a simple wild card operation. The hardware designer does not know if a verilog .v file was handcrafted and must be checked in or generated by finiteStateMachine tool and should not be checked in. Setting up the ignore and clean functions can be done but will take a lot of effort. Using something like lndir saves a lot of effort in the long run and doesn't break down in the middle of a design project. The thing to remember about VersionControl is that your design data is probably going to live on long after the VersionControlSystem du_jour has been dumped for the next best one. When selecting a new one the only thing you need to know is how to get your data and checkin logs out of it when it comes time to move on to a newer VCS. All VersionControlSystems will do four things: 1) Gives you an easy way to clone the entire repository. If anybody wants a copy of your design simply point them to the repository and they are out of your hair. 2) Gives you an easy way to do backups. Clone repository, update once a day and then back that up off-site. Sleep better at night. 3) Tracks changes. Shows all the changes made to any file along with who,what,when and why. You only get the why if they write a descriptive check in message. 3) Gives you a time machine. If something is not working that you are sure you checked last month then restore back to last month and check it again. If it once worked then do a binary search to see when it broke and who dunnit. Beyond that they all provide various features to help developers and most VCS wars are fought over these features. If you are smart then you will not use any of them because they will all complicate things when it comes time to move your data on to the next VCS. John Eaton --f46d043bd988f5053b04d35840ae Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

On Tue, Jan 15, 2013 at 7:41 AM, Ben Gam= ari <bgamari DOT foss AT gmail DOT com> wrote:

This is what version control systems are for. Tags and branches exist=
precisely for this reason. In the case of git, one can handle the case
of multiple source repositories with git-submodule. Other modern VCSes
have similar facilities. There are much better tools than cp(1) for
dealing with archival and versioning.

Cheers,

- Ben



Version control systems were designed by softwar= e engineers for software engineers.=A0 A lot of hardware design now
rese= mbles software programming so we can use a lot of their tools BUT not all o= f them. Hardware design is more complex than
software programming and not all software tools will work. Version control = is one of them.

A programmer knows that all .log and .obj files are = generated=A0 so it is easy to set up git to ignore all of them. Cleaning th= em
out between runs is a simple wild card operation.

The hardware desig= ner does not know if a verilog .v file was handcrafted and must be checked = in or generated by finiteStateMachine
tool and should not be checked in.= =A0 Setting up the ignore=A0 and clean functions can be done but will take = a lot of effort. Using something
like lndir saves a lot of effort in the long run and doesn't break down= in the middle of a design project.


The thing to remember about = VersionControl is that your design data is probably going to live on long a= fter the VersionControlSystem du_jour has
been dumped for the next best one.=A0 When selecting a new one the only thi= ng you need to know is how to get your data and checkin logs out of
it w= hen it comes time to move on to a newer VCS.

All VersionControlSyste= ms will do four things:


1) Gives you an easy way to clone the entire repository. If anybody= wants a copy of your design simply point them to the repository and they a= re
=A0=A0=A0 out of your hair.


2) Gives you an easy way to do= backups.=A0 Clone repository, update once a day and then back that up off-= site. Sleep better at night.


3) Tracks changes.=A0 Shows all the changes made to any file along = with who,what,when and why. You only get the why if they write a descriptiv= e
=A0=A0=A0 check in message.

3) Gives you a time machine. If som= ething is not working that you are sure you checked last month then restore= back to last month and check it again.
=A0 =A0 If=A0 it once worked then do a binary search to see when it broke a= nd who dunnit.


Beyond that they all provide various features to = help developers and most VCS wars are fought over these features. If you ar= e smart then you will not use any
of them because they will all complicate things when it comes time to move = your data on to the=A0 next VCS.


John Eaton




<= br>=A0
















<= br>




=A0
--f46d043bd988f5053b04d35840ae--