Jump to content

Questions about Plastic


King_DuckZ

Recommended Posts

Hello, I'm interested in evaluating Plastic for our next project as an alternative to what we use now. As suggested by Pablo in a comment to a blog post, I'd like to ask the following before starting experimenting with Plastic:

does Plastic rely on the read-only flag?

  1. does Plastic rely on the read-only flag on Windows?
  2. why do you provide a Visual Studio plugin? does Plastic need to know about everything you do/want to do? If so, what happens if I use other text editors or custom made tools?
  3. can you easily commit only a part of a file?
  4. can you easily change history (ie: interactive rebase in git, reset --hard...)
  5. does Plastic enforce a certain line ending, like Perforce?
  6. is there an easy way to see the unified diff instead of the side-by-side I saw in the screenshots?
  7. is there an easy way to produce and apply patches?
  8. can you blame, and can Plastic look through merges in order to report the correct author of a certain line?
  9. can you do everything from the CLI?

Edit: here are the comments I'm referring to

Link to comment
Share on other sites

Hi King_DuckZ!

does Plastic rely on the read-only flag on Windows?

No, it's not needed. You can work without it in both systems Windows and Unix. Actually this is default working mode in the newer releases.

why do you provide a Visual Studio plugin? does Plastic need to know about everything you do/want to do? If so, what happens if I use other text editors or custom made tools?

There's no problem about using a different IDE, we have the "transparent scm" feature that will collect all your code refactors smoothly (http://www.plasticscm.com/features/transparent-scm.aspx)

We provide a Visual Studio since some customers are used to use a Plugin in their daily basics. At the end of the day you can achieve the same using the "Transparent scm" feature.

can you easily commit only a part of a file?

I'm afraid that you can't, It's and old request but it's not done yet.

can you easily change history (ie: interactive rebase in git, reset --hard...)

yes, undo your workspace changes and switch to the desired changeset, HEAD if you want.

does Plastic enforce a certain line ending, like Perforce?

No.

is there an easy way to see the unified diff instead of the side-by-side I saw in the screenshots?

No, but it can be easily scripted using the cm cat command.

is there an easy way to produce and apply patches?

You can use the "shelve" feature in order to achieve it. You can apply shelves along your repository we are thinking in a way so send "shelves" using the replica operation or mail.

can you blame, and can Plastic look through merges in order to report the correct author of a certain line?

Yes, you can use the Annotate feature to review the lines author and where it was done.

can you do everything from the CLI?

Almost everything. Actually there are more options in the CLI

On the other hand, for example, you can't delete a changeset from the command line.

Link to comment
Share on other sites

  • 2 weeks later...

Sorry for taking so long, this period has been very busy and we didn't do much experimenting.

Today I finally have the time to test Plastic out, so here are my thoughts. I'll post more later as I practice with it.

Regarding the questions I posted earlier:

3 - That's quite an important feature imo. It's actually what allows you to keep your commits tidy and atomic. It would be great to have it in Plastic.

4 - I probobly didn't understand, but I was referring to the ability in git to reorder commits. For example, I commit locally a new file that seems to work, maybe a c++ template. Then I do more commits until I use a method from the new template class for the first time (uh... it happened to a friend actually...) and discover it doesn't build. Normally, I make a new commit with the fix, and before pushing I squash the two template commit together, so the history quality stays high. Please refer to this: http://blogs.gnome.org/alexl/2009/10/12/the-gospel-of-git-interactive-rebase/

6 - Again, I would love to have that in Plastic. The problem is not scripting the tool itself, but rather making sure that this tool is available at its latest version on every machine, including servers.

Thank you for your interest in my opinion.

Link to comment
Share on other sites

Ok, I'm kind of lost. I created a new repository and then a new workspace and added a few dummy files, then I created a new test branch. Last, I deleted the directory where I did all that. It looks like I needed a server to do that, so I just used localhost as the server:

511 cm mkrep plasticTest@localhost:8087

514 cm mkwk MyTest .

516 cm add .

518 cm status

519 cm ci -h

520 cm ci -h|less

521 cm commands | less

522 cm | less

523 cm gs

524 cm | less

525 cm status

526 cm ci -m "Test first import"

527 cm add test.txt

528 cm status

529 cm gs

530 cm gs *

531 cm ci -m "Test first import"

532 cm find branches

533 cm mkbr testBranch

534 cm find branches

537 cm replicate -h|less

538 cm replicate testBranch@localhost testBranch@LinuxServer:8087

Next, I installed a Plastic server on a Linux machine. Similarly to what I did earlier, from my Windows PC I did:

mkdir Framework

cd Framework

cm mkrep Framework@LinuxServer:8087

cm mkwk MyWorkspace .

cp -r <project path>/Framework/* .

cm add -R *

cm ci -m "Framework first import"

The problem is that I get this error:

A merge is needed from changeset cs:1@rep:default@repserver:127.0.0.1:8087 to changeset cs:0@rep:default@repserver:127.0.0.1:8

087 (the changeset you are currently loading) in order to checkin. The checkin operation cannot continue. It is necessary to s

olve the conflicts by merging your current workspace contents with the latest contents of the branch you are currently working

on. Then, you can retry the checkin operation.

What did I do wrong compared to the first try?

Link to comment
Share on other sites

Hi psantosl, I just tried it but it didn't work. I lost the output but more or less it said MyFramework didn't exitst, though if I did the cm mkrep MyFramework again it said the repository was already there.

In the end I tried the following commands to make sure I'm starting from anew:

[duckz@DUCKZ-PC plastic_repo]$ cd ..
[duckz@DUCKZ-PC Develop]$ rm -rf plastic_repo/
[duckz@DUCKZ-PC Develop]$ mkdir plastic_repo
[duckz@DUCKZ-PC Develop]$ cd plastic_repo/
[duckz@DUCKZ-PC plastic_repo]$ cm mkrep Framework
The repository Framework for repository server DUCKZ-PC:8087 already exists.

It seems like plastic is keeping some extra informations outside of the working tree, which I don't know how to remove. This also feels weird, as it probably means that even the following (untested) wouldn't work:

mkdir test1
cd test1
cm mkrep myTest
cd ..
mkdir test2
cd test2
cm mkrep myTest

Is there a tutoria for git/mercurial users learning plastic? I'm really willing to give plastic a try, but it seems to be very different from what I'm used to.

Link to comment
Share on other sites

You're confusing repositories with workspaces.

A workspace is just the place where you work.

The repositories are the places where the data is stored.

In git/hg you're tied to one repository per workspace (more or less) which is rather inconvenient outside OSS world.

Here the limitation doesn't exist.

cm mkrep creates a repo

rm -rf removes a workspace

nothing to do with each other I'm afraid! :)

Why don't you take a look at our quick start guide?? http://www.plasticscm.com/infocenter/quick-start.aspx It should drive you in the right direction :)

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...