Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Version control for VHDL projects.

Reply
Thread Tools

Version control for VHDL projects.

 
 
Andy Peters
Guest
Posts: n/a
 
      03-29-2010
On Mar 25, 8:37*am, rickman <(E-Mail Removed)> wrote:
> On Mar 25, 7:27*am, Marcus Harnisch <(E-Mail Removed)> wrote:
>
> > rickman <(E-Mail Removed)> writes:
> > > Reading the manual it seems to be saying that if I want to set a
> > > baseline with a tag or if I want to create a branch, I can copy
> > > everything to a separate folder.

>
> > That would be SVN's own copy, not a file system copy. The duplication
> > happens inside the database (repository).

>
> I guess I don't understand this. *How do I make a copy in a new
> directory that is a "SVN copy"?


You are making the copy in the repository.

>
> > SVN doesn't distinguish tags from branches. Both are copies (see
> > above) of a particular revision. If you check out this copy, modify
> > it, and check it back in, you have a branch. If you don't touch the
> > copy, it is a tag.

>
> Yeah, I understand the fact that a branch is the same as a tag. *I
> just don't see how to create either and have them accessible in a way
> that is at all similar to what I am used to with conventional VC.
>
> Rick


 
Reply With Quote
 
 
 
 
KJ
Guest
Posts: n/a
 
      03-30-2010
On Mar 29, 6:15*pm, Andy Peters <(E-Mail Removed)> wrote:
>
> See, when you create a branch or a tag, you do the copy in the
> repository, not on your working computer's local filesystem.
>


Be careful of 'tagging' things that use externals though...you'll
likely be disappointed when you find out what 'cheap copy' really
means.

Kevin Jennings
 
Reply With Quote
 
 
 
 
Bill Mills
Guest
Posts: n/a
 
      03-31-2010
On Mar 23, 2:41*pm, Symon <(E-Mail Removed)> wrote:
> Guys,
>
> I am interested in what people use for version control of VHDL projects
> that are run across geographically diverse teams. Currently I use
> Subversion over a VPN, with windows PC clients connecting using
> TortoiseSVN, which works pretty well. I wonder if anyone is using, or
> considering using, distributed version control like GIT or Mercurial? If
> so, would you care to share your experiences?
>
> Thanks, Symon.


No experiences to offer myself. But Joel on Software recently posted
this. The Mercurial tutorial, near the end, describes branch and
merge using this distributed system.

http://www.joelonsoftware.com/items/2010/03/17.html

 
Reply With Quote
 
Andy Peters
Guest
Posts: n/a
 
      04-01-2010
On Mar 29, 5:35*pm, KJ <(E-Mail Removed)> wrote:
> On Mar 29, 6:15*pm, Andy Peters <(E-Mail Removed)> wrote:
>
>
>
> > See, when you create a branch or a tag, you do the copy in the
> > repository, not on your working computer's local filesystem.

>
> Be careful of 'tagging' things that use externals though...you'll
> likely be disappointed when you find out what 'cheap copy' really
> means.
>
> Kevin Jennings


I think we've been through this before, and my advice still stands:

If the externals you use are themselves tags, then a project that
includes them will always give you exactly what you expect.

-a
 
Reply With Quote
 
KJ
Guest
Posts: n/a
 
      04-02-2010
On Apr 1, 6:45*pm, Andy Peters <(E-Mail Removed)> wrote:

>
> I think we've been through this before, and my advice still stands:
>


We have...and my advice still stands also

> If the externals you use are themselves tags, then a project that
> includes them will always give you exactly what you expect.
>


One thing that I expect from a version control system is a non-manual
mechanism to be able to tag something so that when I come back days
(weeks, months, years) later I can retrieve it exactly as it was back
at the time that it was tagged...whether or not I chose to use
externals in that project...whether or not those external things have
also changed during that interval...and the big word in all of this is
'non-manual'.

Using SVN, the only way you can get this to happen is to manually
assign specific revision levels to each and every external in the
entire project (what you refer to as "externals you use are themselves
tags"). Having to manually assign revision levels has the following
consequences:
- Additional work that can be performed incorrectly (i.e. less
productive, possibly error prone)
- With each and every code freeze that is to be archived, one needs to
first check that each and every external does in fact still have the
correct revision level assigned. Externals that aren't rev specified
would have to be first tagged themselves (there's the extra work I
talked about)
- No way to check that a build from the 'head' revision is actually
correct without deleting all those manually entered revision levels
(kind of calls into question the integrity of the designs in the
repository if nobody is actually snapshotting and validating the
'latest/greatest' somewhat routinely)

Bottom line, is that SVN does what it does, maybe you find it does
what you'd like and don't see the above consequences as a burden...but
it doesn't do what I would expect a version control tool to
do...without heavy duty manual intervention ('heavy duty' that is when
you practice code reuse and the reusable code is also under
development). I'm not alone in that view, just like you're not alone
in yours.

Interestingly enough, it seems there might be movement afoot to
address this limitation when version SVN 1.7.0 comes out based on the
following thread...or maybe I'm just hoping...
http://groups.google.com/group/torto...0eedef8?hl=en#

Probably shouldn't beat the horse again on this group so I'll leave it
at that and simply refer the interested reader to check out the
discussion from last May where this got discussed quite a bit.
http://groups.google.com/group/comp....a2dc3837f5819d

Kevin Jennings
 
Reply With Quote
 
Symon
Guest
Posts: n/a
 
      04-03-2010
Dear Andrew,
I know this is rude to email directly, but I don't suppose you would
like to answer my usenet query on comp.lang.vhdl about git? I felt free,
and your original reply was one of the most cogent usenet replies I've seen!
Thanks. Symon.


 
Reply With Quote
 
rickman
Guest
Posts: n/a
 
      04-05-2010
On Mar 29, 6:16*pm, Andy Peters <(E-Mail Removed)> wrote:
> On Mar 25, 8:37*am, rickman <(E-Mail Removed)> wrote:
>
> > On Mar 25, 7:27*am, Marcus Harnisch <(E-Mail Removed)> wrote:

>
> > > rickman <(E-Mail Removed)> writes:
> > > > Reading the manual it seems to be saying that if I want to set a
> > > > baseline with a tag or if I want to create a branch, I can copy
> > > > everything to a separate folder.

>
> > > That would be SVN's own copy, not a file system copy. The duplication
> > > happens inside the database (repository).

>
> > I guess I don't understand this. *How do I make a copy in a new
> > directory that is a "SVN copy"?

>
> You are making the copy in the repository.


Maybe I don't understand that. I am using SVN with Tortoise and I see
the files in the regular directory tree using Windows Explorer. How
do I make a copy just in the repository? Do I use a special command
for that?

There are a number of other things I am unclear about. I have tried
looking at the docs, but they seemed to be explaining things that I
wasn't confused about. Should I go back and read it again? I can't
imagine this is really that hard. I expect I just have a mindset
about some aspect of this that is making it hard for me.

Rick
 
Reply With Quote
 
Andy Peters
Guest
Posts: n/a
 
      04-05-2010
On Apr 5, 8:38*am, rickman <(E-Mail Removed)> wrote:
> On Mar 29, 6:16*pm, Andy Peters <(E-Mail Removed)> wrote:
>
>
>
> > On Mar 25, 8:37*am, rickman <(E-Mail Removed)> wrote:

>
> > > On Mar 25, 7:27*am, Marcus Harnisch <(E-Mail Removed)> wrote:

>
> > > > rickman <(E-Mail Removed)> writes:
> > > > > Reading the manual it seems to be saying that if I want to set a
> > > > > baseline with a tag or if I want to create a branch, I can copy
> > > > > everything to a separate folder.

>
> > > > That would be SVN's own copy, not a file system copy. The duplication
> > > > happens inside the database (repository).

>
> > > I guess I don't understand this. *How do I make a copy in a new
> > > directory that is a "SVN copy"?

>
> > You are making the copy in the repository.

>
> Maybe I don't understand that. *I am using SVN with Tortoise and I see
> the files in the regular directory tree using Windows Explorer. *How
> do I make a copy just in the repository? *Do I use a special command
> for that?


Yes, there's a special command, svn copy.

If you wish to make a branch from your __checked-out working copy__,
right click on its icon, choose "TortoiseSvn" then "Branch/Tag." A
dialog box titled "Copy (Branch/Tag)" will pop up.

You'll see:

From WC at URL:
svn://eng-andrew/fpga/projects/CameraSim/trunk (not editable)

and

To URL:
svn://eng-andrew/fpga/projects/CameraSim/trunk (list box)

(note that they are the same, to start). This is followed by:

Create Copy in the repository from:
( ) HEAD revision in the repository
(*) Specific revision in the repository [2272] ...
( ) Working copy

followed by an entry box for the log message.

Now remember: In this example, you want to use your checked-out
working copy as the starting point for a new branch. (This working
copy may have edits to any of the files -- this is fine!) First,
select the "Working copy" radio button. This means that the new branch
will use the working copy as its base (and all history is retained).
Then, next to the "To URL:" combo box is a button with ellipsis. Click
it, and the repository browser opens to the project's location in the
repo. In the left-hand pane is the repo tree. If you've used the
standard trunk/branches/tags format, click on the project name in the
left-hand pane, and click the "+" to expand the tree. Click "branches"
then click "OK" and you're back to the dialog. Click in the "To URL"
combo box and put your cursor after "branches" in the URL. Finish the
URL by giving it a useful branch name:

svn://eng-andrew/fpga/projects/CameraSim/branches/testbranch

Enter a useful log message ("Creating branch to test X, Y, Z" or
whatever). Make sure you CHECK the box labeled "Switch working copy to
new branch/tag" then click "OK." Voila, you've now created a branch
and your working copy is now of that branch, not the trunk.


> There are a number of other things I am unclear about. *I have tried
> looking at the docs, but they seemed to be explaining things that I
> wasn't confused about. *Should I go back and read it again? *I can't
> imagine this is really that hard. *I expect I just have a mindset
> about some aspect of this that is making it hard for me.


it's really not that hard but it can be somewhat non-obvious.

=-a
 
Reply With Quote
 
rickman
Guest
Posts: n/a
 
      04-06-2010
On Apr 5, 2:48*pm, Andy Peters <(E-Mail Removed)> wrote:
> On Apr 5, 8:38*am, rickman <(E-Mail Removed)> wrote:
>
>
>
> > On Mar 29, 6:16*pm, Andy Peters <(E-Mail Removed)> wrote:

>
> > > On Mar 25, 8:37*am, rickman <(E-Mail Removed)> wrote:

>
> > > > On Mar 25, 7:27*am, Marcus Harnisch <(E-Mail Removed)> wrote:

>
> > > > > rickman <(E-Mail Removed)> writes:
> > > > > > Reading the manual it seems to be saying that if I want to set a
> > > > > > baseline with a tag or if I want to create a branch, I can copy
> > > > > > everything to a separate folder.

>
> > > > > That would be SVN's own copy, not a file system copy. The duplication
> > > > > happens inside the database (repository).

>
> > > > I guess I don't understand this. *How do I make a copy in a new
> > > > directory that is a "SVN copy"?

>
> > > You are making the copy in the repository.

>
> > Maybe I don't understand that. *I am using SVN with Tortoise and I see
> > the files in the regular directory tree using Windows Explorer. *How
> > do I make a copy just in the repository? *Do I use a special command
> > for that?

>
> Yes, there's a special command, svn copy.
>
> If you wish to make a branch from your __checked-out working copy__,
> right click on its icon, choose "TortoiseSvn" then "Branch/Tag." A
> dialog box titled "Copy (Branch/Tag)" will pop up.
>
> You'll see:
>
> From WC at URL:
> svn://eng-andrew/fpga/projects/CameraSim/trunk (not editable)
>
> and
>
> To URL:
> svn://eng-andrew/fpga/projects/CameraSim/trunk (list box)
>
> (note that they are the same, to start). This is followed by:
>
> Create Copy in the repository from:
> ( ) HEAD revision in the repository
> (*) Specific revision in the repository * [2272] ...
> ( ) Working copy
>
> followed by an entry box for the log message.
>
> Now remember: In this example, you want to use your checked-out
> working copy as the starting point for a new branch. (This working
> copy may have edits to any of the files -- this is fine!) First,
> select the "Working copy" radio button. This means that the new branch
> will use the working copy as its base (and all history is retained).
> Then, next to the "To URL:" combo box is a button with ellipsis. Click
> it, and the repository browser opens to the project's location in the
> repo. In the left-hand pane is the repo tree. If you've used the
> standard trunk/branches/tags format, click on the project name in the
> left-hand pane, and click the "+" to expand the tree. Click "branches"
> then click "OK" and *you're back to the dialog. Click in the "To URL"
> combo box and put your cursor after "branches" in the URL. Finish the
> URL by giving it a useful branch name:
>
> svn://eng-andrew/fpga/projects/CameraSim/branches/testbranch
>
> Enter a useful log message ("Creating branch to test X, Y, Z" or
> whatever). Make sure you CHECK the box labeled "Switch working copy to
> new branch/tag" then click "OK." Voila, you've now created a branch
> and your working copy is now of that branch, not the trunk.
>
> > There are a number of other things I am unclear about. *I have tried
> > looking at the docs, but they seemed to be explaining things that I
> > wasn't confused about. *Should I go back and read it again? *I can't
> > imagine this is really that hard. *I expect I just have a mindset
> > about some aspect of this that is making it hard for me.

>
> it's really not that hard but it can be somewhat non-obvious.
>
> =-a


Hey, thanks a lot. I didn't see the menu item in Tortoise. I guess
that makes it easier... :^s The explanation helps a lot too.

Rick
 
Reply With Quote
 
Andrew FPGA
Guest
Posts: n/a
 
      04-13-2010
Apologies for the slow reply - wish I had a way of automatically being
told when someone replies to a message I've posted on a thread? I use
google groups....

> One question is, how do all the clients pull data from all the others?
> Some (all?) clients are behind firewalls? You seem to say in the
> implementation you use, pushes happen to a central server, just like
> SVN, but pulls happen from a local server. Is this local server pushed
> to by the central server or does the local server pull from the central
> server? Or something else?

Ok, so for our company, all clients must be on the VPN before can pull/
push with the servers. I don't know the details but the VPN goes
through the various firewalls somehow - standard IT/networking thingy.
Plenty of open source projects use git so they must deal with the
firewall thing somehow.

So for our source control policy, clients don't pull/push from/to each
other. Only with the servers. Here is an example transcript when I
type "git update". This is an in-house script that will get my client
repo up-to-date with the master server.

$ git update
Full Fetch:
$ git config remote.origin.url git://<local server name>
$ git fetch origin
$ git config remote.origin.url git://<remote server name>
$ git fetch origin --tags
$ git fetch origin
Local branch [master] is tracking [origin/master].
Merging changes into current branch:
$ git merge origin/master
Already up-to-date.
Remove stale tracking branches:
$ git remote prune origin

So you will see it fetches from the local server first. Thats fast/
cheap. Then it fetches from the master server which is at remote
geographical location for our site.

I don't know how the local/remote servers stay in sync. I presume the
local server pulls from the remote/master periodically.

When I push I push to the remote(master) server.

> My second question is, is there necessarily a master copy stored
> anywhere? I'm not exactly even sure what this means in git-world, so
> excuse me if this is dumb. I think I'm confused as to how clients know
> whether their personal repositories are up-to-date with respect to other
> clients.

So for our company, I guess the master server, is well, the master
server. And all these servers must be backed up as per normal IT
stuff.

To find out if my client repo is out of date, I go git fetch. Then I
can go git diff origin/master master to see what the differences are
if any. Read up on git branches and tracking branches.

Hope this helps.
Cheers
Andrew
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Version Control for VHDL Project AndreasWallner VHDL 44 05-30-2009 05:48 PM
Re: Where to get stand alone Dot Net Framework version 1.1, version2.0, version 3.0, version 3.5, version 2.0 SP1, version 3.0 SP1 ? MowGreen [MVP] ASP .Net 5 02-09-2008 01:55 AM
Re: Where to get stand alone Dot Net Framework version 1.1, version 2.0, version 3.0, version 3.5, version 2.0 SP1, version 3.0 SP1 ? PA Bear [MS MVP] ASP .Net 0 02-05-2008 03:28 AM
Re: Where to get stand alone Dot Net Framework version 1.1, version 2.0, version 3.0, version 3.5, version 2.0 SP1, version 3.0 SP1 ? V Green ASP .Net 0 02-05-2008 02:45 AM
VHDL-2002 vs VHDL-93 vs VHDL-87? afd VHDL 1 03-23-2007 09:33 AM



Advertisments