Jump to content

Help me figure out some basics as to what plastic SCM is doing for me


louisvantonder

Recommended Posts

Hey guys.

I installed plastic, with three users. I jsut have a couple of questions, maybe someone can shed some light on this subject for me.

  • Why can I create multiple workspaces? Well, I can understand why, but what does plastic do with this, I cant seem to connect my workspace to someone elses other workspace? How does one achieve this?

I.e. Workspace for software dev projects

workspace for graphical stuff (large files)

I would want to hoop up my dev worspace with another dev's dev worpsace, and the graphics workspace with another designers graphic workspace?

Maybe I am missing the point?

  • Why more than one repository?

  • Only download / sync files on checkout?

As it is now, everything in the workspace is (synced) if you will. This provides a problem between remote users, as we will affectively be keeping 3 copies of all our files on three different locations? Is there now way to see a readonly filestructure representing the data in the workspaces, and then only on checkout, actually retreieve/download that data to the users worspace, on checkout, remove it from the users workspace?

Am I missing something?

Thanks in advance.

Link to comment
Share on other sites

Hi louisvantonder!

Why can I create multiple workspaces? Well, I can understand why, but what does plastic do with this, I cant seem to connect my workspace to someone elses other workspace? How does one achieve this?

Imagine each workspace as a project that you're working. Suppose you work in a company that has at least 10 projects and sometimes you need to "swap" to another project. Using the idea of repository and workspaces you can easy change to another project without problems.

You really can't (or if you can, I really advise you to not to!!) connect to another user's workspace. The workspace is individual and contains all your changes as the other users have their changes too. It works like a sandbox. You don't mess with their environment and they don't mess with yours. :)

What you need to do to "connect" to someone else's changes is get their last changes and you can achieve this very quickly:

  • You can use the replication packages: Replication packages are used to update change in remote machines. Imagine you're working in an airport and the connection is pretty bad but you need to change some files. You can use replication packages to get (or send) just what you need. They are very easy to build: using the Branch Explorer, just click with the right button and choose the "Replication" option, then you can choose how to create the replication package;
  • Incremental Fast Export / Fast Import: Fast Export and Fast Import is the way that Códice choose to migrate code from an great number of DVCS (SVN, GIT and others). When using the Fast Export to exchange code with anyone you must know that the file generated by fast export contains ALL DATA that is in your repository. The incremental part of fast export and fast import is that when importing or exporting you can use mark files to keep track of what you've send to them and what you've got from them;
  • Replication Sources and Sync View: If you're on the same network the easiest way to share changes is using the Sync View. It was added in v. 4.0 and it is one of the best features at this version (at least to me!! :)). To setup a Sync View just click in the left menu in "Other Actions" and then Sync View. You'll find more detailed info about Sync View here: http://www.plasticscm.com/releases/4.0/manuals-html/en/guiguide.htm#_Toc315109050

I really recommend that your team abuse and use the Sync View. It's awesome!! :)

I would want to hoop up my dev worspace with another dev's dev worpsace, and the graphics workspace with another designers graphic workspace?

Maybe I am missing the point?

Why more than one repository?

Only download / sync files on checkout?

As it is now, everything in the workspace is (synced) if you will. This provides a problem between remote users, as we will affectively be keeping 3 copies of all our...

Well, Plastic 4 is all about disconnected environments!!! :)

As I pointed before, there are some ways to keep your co-workers updated. But keep in mind as you're working using distributed way what you do in your branch will not affect your co-workers. Every repository is a backup. Everybody has a copy of your repository contains all data that you have or had (if they're not updating they repositories).

You can share one repository with as many people as you want. You can even set permissions right to be sure that only the right person can see your data.

Why more than one repository? -> BECAUSE YOU CAAAAAAN! :) Keep in mind that each repository can be a different project and one code must not affect any other code.

Only download / sync files on checkout? -> Sorry, didn't get this. Can you explain it again? :)

Hope I helped! :)

Link to comment
Share on other sites

Thanks Cidico.

I did eventually spend the 30 minutes on teh initial quick guide (that is 90 pages!!), WOW. :-)

I figured out that each of my projects would be a repository, and you have to create a unique workspace, to access that repository. So I will eventually have as many repositories on the server, ans I have projects. And each developer will have as a seperate workspace, for each project he wishes to work on.

Am I getting is right thus far?

My concern was, that with three developers, and 10 projects, we will have 4 copies of everything? That changes lets say, 100mb into 400mb of storage needs. My companies main development dir, has about 50gb of data... that includes graphical work, source code, supporting images (websites) etc. That equates to quite a load of data being shared 4 ways? Given, I should probably remove the big graphical sources, but I would really like to version control them too...

Is this the correct way of seeing things?

Now, I have two branches, so I intend to (set up a server) at each branch, and have the local peeps to that server, connect to their local server.

I then have to setup replication between the two servers right? So how effectivly (quickly) does my changes at branch 1 server, replicate to branch 2 server, so that If I work on something, check it in, and phone a dev at another branch, that he can immedietly go and get the changes?

Thanks again for your help and very detailed explanation.

-louis

Link to comment
Share on other sites

Hi louis!

The quick guide explains a lot of things an? I had the same doubts when moving from svn!

Let's see!

I figured out that each of my projects would be a repository, and you have to create a unique workspace, to access that repository. So I will eventually have as many repositories on the server, ans I have projects. And each developer will have as a seperate workspace, for each project he wishes to work on.

You got it right!

My concern was, that with three developers, and 10 projects, we will have 4 copies of everything?

Yes. Every developer will have the entire copy of the system in their machines! But this is because Plastic way of work (distributed), so, they can work in the office machine, at home, in their laptops and so on. :)

My concern was, that with three developers, and 10 projects, we will have 4 copies of everything? That changes lets say, 100mb into 400mb of storage needs. My companies main development dir, has about 50gb of data... that includes graphical work, source code, supporting images (websites) etc. That equates to quite a load of data being shared 4 ways? Given, I should probably remove the big graphical sources, but I would really like to version control them too...

Sorry, I guess I didn't get the "my companies main development dir". What does it mean? Does your company has a shared network folder where all developers get the code from there? Can you explain a little bit?!

Link to comment
Share on other sites

Hi, yes, what I am saying, is that our current "development data" is about 60gb. That includeds everything we have worked on, and are working on. All sources, files, supporting docs. Having 4 copies of all of it, seems drastic, but I understand now why its better that way.

I am looking into replicating two servers, to do the main data syncs....

thanks for your help thus far. I must say in 3 days, I have come to REALLY respect Plastic... its actually quite awesome.

Link to comment
Share on other sites

You really don't need 2 servers.

I really recommend you to change the Plastic's Database backend. By default it uses SqlServer CE (which does not support your needs), but you can use the SQL Server, Oracle, MySQL, PostgreSQL (dependes on your companies policy to database... :))

Every repository has it's own database file, so you can use the same Server with different repositories! :)

If I'm not wrong, and some folks from Códice can help me here, Plastic does compress your data before saving it in database, so, maybe you don't need all the 60gb..

Link to comment
Share on other sites

Ye, it definately does compress, is normally cuts the size in half, from what I could benchmark.

My problem with the data is, we only have 1 - 4mb DSL lines hooking up the two branches... even keeping 30GB up to date on demand, would be tedious to say the least. If I can quietly replciate, won;t that be better? My biggest concern for replication, is speed....?

Link to comment
Share on other sites

Hummm very good! I didn't know this benchmark! :)

You're forgetting the fact that when your branches had changed, Plastic will only send the piece of data that changed. It won't replicate everything.

The "load" of sharing everything will happen only one time per repository. So, after the initial load, your connection will be spared and youtube won't freeze again! lol :P

Your team doesn't need to update all the time, since each branch is a new task and the tasks normally are independent, no problem!

Here at my company we are 5 developers and we have 4 projects under Plastic (I'm planning the migration from VSS and SVN very soon of the other projects)

We're at the same building so we use the wired network. But when I need to update my workspace at home I was using the replication package solution and worked just fine!

Link to comment
Share on other sites

Thanks cidico.

See my problem would be, lets say, using a new revision of a 40mn PSD file. Getting it from the remote server, would take time... (hanging :-) ) hah!

Maybe I am misunderstanding the server replication. My aim is to have those big files constantly kept in background sync between the two servers, and when I want to pull the latest version, I get that 40MB from my local server through lan, and not the remote server through 4mb dsl.

Does that make sense?

Link to comment
Share on other sites

I never used this feature, but plastic support triggers at server's side.

So you can specify a trigger "after checkin" and then make the server replicate the change "automatically".

See here: http://www.plasticscm.com/releases/4.0/manuals-html/en/triggerguide.htm#_Toc315275795

Maybe some guys of Códice can help you to customize a script for it.

Or, you can setup a Sync View where you can manually start the replication from remote server to your local server (not your machine right now, the "central server" and then get it to your local repository.

Link to comment
Share on other sites

I've been looking at replication examples, and my brain is staarting to generate good amounts of smoke... :-) I suppose the huge replication configurations are a good thing... but I am battling to figure out what to setup for my basic needs.

I will play a bit more, see how it plays. What I have enjoyed so far, is the relative simplicity of getting it set up and working. I hope I can achieve the same with the server replication.

thanks for your ideas and help cidico.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...