Who we are

We are the developers of Plastic SCM, a full version control stack (not a Git variant). We work on the strongest branching and merging you can find, and a core that doesn't cringe with huge binaries and repos. We also develop the GUIs, mergetools and everything needed to give you the full version control stack.

If you want to give it a try, download it from here.

We also code SemanticMerge, and the gmaster Git client.

Finding a change you made long ago

Wednesday, April 28, 2010 Pablo Santos 10 Comments

It *must* has happened to you: a new bug or issue shows up and then a bell rings: you know you wrote some code long ago (like two or three months ago) that had something to do with it. But... where's the code? And even more important: why did you change it?

Ok, let's go: you all know Plastic SCM has a query system. Yes, you can go to the command line and type "cm find" and then you'll be able to start finding revisions, branches, labels, merges... everything. If you're a hardcore CLI hacker then you'll probably enjoy it, but let's face it... it's 2010 and well, we didn't yet step on Mars as the Odyssey said but it doesn't mean we've to continue using tools from the 70's and 80's...

So, take a look at the Plastic GUI, to the changesets view, for instance, and you'll find there a very familiar button: 'advanced'. Click on it and you'll discover that the changeset's view is actually running a query, something like "find changeset where date > '3/29/2010' on repository 'codice@localhost:6060'".



Let's use it to find the changes we're looking for: what about trying to find the revisions I've done in the last 3 months or so? It will translate into something like "find revs where date > '1/29/2010' and owner='me'" (Note: you can use 'me' instead of 'your-name', small trick).




Now you've a good list of 'candidates': all the revisions you've done during the last months. Easy. But, how to find the one you're looking for? You remember it was under src\client\basecommands directory, just that... So, use the filter on the view to reduce the potential candidates.



Once the list gets smaller, you can double click each file to see its contents (you know, on the 80's you'd use something like "cm cat" or so, but now there're better ways...) or even better, use CTRL-D (shortcut for differences) to see what you modified on that revision.

It took me one minute to find my change yesterday... hope it helps!
Pablo Santos
I'm the CTO and Founder at Códice.
I've been leading Plastic SCM since 2005. My passion is helping teams work better through version control.
I had the opportunity to see teams from many different industries at work while I helped them improving their version control practices.
I really enjoy teaching (I've been a University professor for 6+ years) and sharing my experience in talks and articles.
And I love simple code. You can reach me at @psluaces.

10 comentarios:

Who we are

We are the developers of Plastic SCM, a full version control stack (not a Git variant). We work on the strongest branching and merging you can find, and a core that doesn't cringe with huge binaries and repos. We also develop the GUIs, mergetools and everything needed to give you the full version control stack.

If you want to give it a try, download it from here.

We also code SemanticMerge, and the gmaster Git client.

Gource for Plastic SCM

Thursday, April 08, 2010 Pablo Santos 1 Comments

David just sent me the following code to make gource work with Plastic.

Build it and create a pgource.exe and then type (all in one line)


$ cm log -f=0 --allbranches
--csFormat="{items}"
--itemformat=
"{date}|{owner}|{shortstatus}
|{path}{newline}"
| pgource.exe > p.log


Now you've a gource ready log! Just play it and enjoy


$ gource p.log





using System;
using System.Collections;
using System.Globalization;

namespace pgource
{
class Class1
{
private static string mCulture = "en-us";
private static Stack mReversedLines = new Stack();

[STAThread]
static void Main(string[] args)
{
ProcessArgs(args);
ReadInput();
PrintOutput();
}

private static void ProcessArgs(string[] args)
{
if (args.Length == 1) mCulture = args[0];
}

private static void ReadInput()
{
string line;

while ( (line = Console.ReadLine()) != null)
{
ProcessLine(line);
}
}

private static void ProcessLine(string line)
{
if (line == string.Empty) return;

string[] parts = line.Split('|');

if (parts.Length != 4) return;

ProcessParts(parts);
}

private static void ProcessParts(string[] parts)
{
// 3/28/2010 9:10:22 PM|dave|C|c:\develop\Form1.resx

mReversedLines.Push(string.Format("{0}|{1}|{2}|{3}",
GetUnixDate(parts[0]),
parts[1],
GetStatus(parts[2]),
GetPath(parts[3])));
}

private static int GetUnixDate(string date)
{
CultureInfo c = new CultureInfo(mCulture);

DateTime parsedDate = DateTime.Parse(date, c, DateTimeStyles.None);

return (int)((parsedDate - new DateTime(1970, 1, 1)).TotalSeconds);
}

private static string GetStatus(string status)
{
switch (status)
{
case "A": return "A";
case "R": return "D";
default: return "M";
}
}

private static string GetPath(string path)
{
return path.Replace('\\', '/').Replace(':', '_');
}

private static void PrintOutput()
{
while (mReversedLines.Count > 0)
{
Console.WriteLine(mReversedLines.Pop() as string);
}
}
}
}



Pablo Santos
I'm the CTO and Founder at Códice.
I've been leading Plastic SCM since 2005. My passion is helping teams work better through version control.
I had the opportunity to see teams from many different industries at work while I helped them improving their version control practices.
I really enjoy teaching (I've been a University professor for 6+ years) and sharing my experience in talks and articles.
And I love simple code. You can reach me at @psluaces.

1 comentarios:

Who we are

We are the developers of Plastic SCM, a full version control stack (not a Git variant). We work on the strongest branching and merging you can find, and a core that doesn't cringe with huge binaries and repos. We also develop the GUIs, mergetools and everything needed to give you the full version control stack.

If you want to give it a try, download it from here.

We also code SemanticMerge, and the gmaster Git client.

Plastic SCM 3.0 GUI concepts

Friday, April 02, 2010 Dave 0 Comments



We are already warming up for the release of Plastic SCM 3.0 with new interesting features and incorporating user feedback. As part of this effort, we are studying how to better arrange the layout of the main GUI screen, a sample of which you can find in this picture:

...

Our attention is currently focused on these main areas:Better usage of screen real state, specially the top area, where much blank space is used. While this space was left unused on purpose on the 2.0 design to balance the layout, some users have suggested putting that into use.
  • The workspace status area needs to accommodate longer branch and repository names, so more space should be given to those. Also, there is no need to have so big fonts for the current workspace name and path.
  • As a complement to the current branch and repository of the workspace in the workspace status area, it’d be nice to have the information of the task that this branch is related to (from the integration with the task management system in place, for instance, Jira or Bugzilla).
So we have prepared some mockups to solve these specific issues. The first simply makes the Plastic logo on the top smaller. We gain an horizontal band of about 20 pixels window-wide.
But the biggest change is in the layout of the workspace status bar, where there is more space for larger repository and branch names:

The second sample goes a bit further and uses the empty area on the top to hold the workspace tabs. It also moves the buttons to display repositories, workspaces and preferences to the bottom of the screen. Still not sure about this last one:

Neither of these will be the final look of the Plastic GUI 3 since more features with impact on the GUI will be included, but we are very interested in knowing your opinion about them. Feel free to comment!

0 comentarios: