p4v for the lose - Aurora

p4v for the lose

| | Comments (9)

The quickest way of ending a war is to lose it.
-- George Orwell

Introduction

I guess I made the last post a little bit of a holy crusade and while I guess that is just fine for a blog like this I did just throw it out there that I hate the non windows look and feel of the p4v application without any motivations, so I decided to just download the thing and rediscover how crappy it still is and write it down this time.

Find file and history

I'm a big fan of keyboard navigation, even though it's a graphical interface, you should be able to navigate it with ease. Since the p4win application is a standard MFC application, with the bells and whistles that brings, it's most of the time easy to navigate the UI with the keyboard only. For example, say you want to find out what the differences between revision 2 and 3 of the file Exception3.cpp are. In p4win you press CTRL-F for the find dialog. Type "exception". You can now navigate with the arrow keys to the right file (if there are multiple hits, if there is only one hit it will take you there). CTRL-H brings up the history where you immediately can shift select the two revisions and then press ALT-d to bring up the diff. All with standard windows controls.

So back to p4v. We can press CTRL-F for find, but the focus is not in the edit dialog for some reason so I have to press TAB to highlight it. Twice. Of course the default search pattern is not the client view, which makes the p4win one immensely useful, but rather whatever directory you had selected in the folder view. So I have to edit the default search view. Then enter the partial search pattern. I can now scroll down with the arrow keys to highlight my file and press CTRL-T to bring up the history. This now brings up the most unhelpful dialog ever (incidentally it's the same dialog that the visual studio integration brings up). I can see the different revisions, but I can not select two of them for diffs! I must instead press CTRL-SHIFT-D to bring up yet another diff dialog where I again have to specify the revisions I want to diff! Navigating here with the TAB key is a lot of keypresses. And we're suddenly not presented with any visual information anymore, but rather a text interface. What's the last revision? How do they differ when I've branched? All that is of course hidden in the previous dialog.

The history dialogs

I also noticed that the p4win history dialog shows the integration history, a vital piece of information. I could not find where to show that in the p4v history dialog at all. Just an oversight? I'm thinking more and more that the p4v program has not been used as extensively as the p4win application and the features has not gone into it as much. Sure, at some point it will probably catch up since the feature requests for p4win is probably at a bare trickle, but again, why would I change to this new application?

The p4v history dialog.
The p4win history dialog.

The integrate dialog

The integrate dialog is arguably much nicer than the p4win one, but only if you need to set any of the options, which you in 99% of the time don't. Most of the time I use the integrate dialog it will by default do the right thing in p4win. In very special cases it does the wrong thing and you have to go in and manually set some options in the hidden dialogs, but it's rare. Usually you're trying to do something tricky in this case. The p4v dialog is nicer since it has all the options right there, but I must say that the preview behaviour of the p4win application is much better (it shows the preview in the log) than the p4v behaviour of popping up yet another window that I have to dismiss.

Submitting a file

So I realize that the whole F6-F12 behaviour of switching tabs in p4win is arguably weird, but I really like it. Perhaps since I spend so much time in Maya that has the same kind of philosophy while switching menu sets. In p4v it's CTRL-1 instead of F6 to switch to pending changelists, not a big deal. But again the focus problem. In p4win the keyboard focus is at the correct location immediately, you can start arrow your way through the changelists you want to submit and then press CTRL-s to bring up the submit dialog.

In p4v I have to start pressing a number of TABs before the arrow keys finally do their thing. After that I can press CTRL-s to submit the file, but come on! Keyboard focus is important. P4win is building on a long time client that has the benefit of MFC as well with the keyboard focus thing. It's not perfect, but it's honed through long years. The situation between p4win and p4v reminds me of how Netscape too the number one browser and decided to throw it all out and start from scratch[1]

Navigating panes

In p4win you have to major panes, the left explorer like folder view and to the right any list pane that you've currently selected (pending changelists, submitted changelists, users etc). Switching between them is as easy as pressing CTRL-TAB. In p4v of course this is multiple TAB presses. How many each I can't determine since it's very unclear where the focus is in the p4v application.

Speaking of the left tree view, in p4win you can still see the little icons that indicate checked out status, locked status etc for highlighted items since the highlight doesn't include the icon itself. Of course in p4v the highlight includes the icons and makes it completely unreadable what the icon status is.

The p4v tree view highlight.
The p4win tree view highlight.

In closing

It seems that it has been very one sided this article, I did try to search in the help for p4v about the keyboard shortcuts. A search for the word "keyboard" brought up exactly 0 hits. Surprise surprise if the help application was a non standard windows one as well... I finally found it under "p4v shortcuts", after scrolling past the description on how you could drag and drop the files in the interface to do all sorts of fancy things. I just think the developers focused on the wrong things here...

I realize that first time users of perforce might like p4v for what it is, a mouse click fest. It's platform agnostic look and feel can be a compelling argument if you're working on multiple platforms, this might very well be the best choice for you. But for myself how pretends by daytime to make games for a living, in a windows only shop to boot, p4win makes too much sense to overlook or to switch from. You will pry the p4win client from my cold hands...

Resources

  • Practical Perforce, a pragmatic take on how to manage and do common operations in perforce the way it was intended. Go with the flow and read it!







Footnotes

  • [1] It was of course Netscape's downfall. Arguably it was before that when they tried to cram things into the browser too fast and too much, but then throwing out all code didn't help either.

9 Comments

AndyB said:

I agree that p4v has many ( many! ) flaws, though each new release does seem a little better.

However, I have to say, the Revision Graph and Timelapse views are marvelous.

My solution is to use p4v & p4win according to my needs. ( In particular p4v is crap at big integrations, I always use p4win for those ).

Jim Tilander Author Profile Page said:

The revision graph and the timelapse view are accessible from the p4win application as well (although it really calls the p4v application behind the scenes). I also usually install both applications, but never use the p4v directly.

I guess that if we wait long enough, p4v will catch up to the functionality of p4win, but meanwhile p4win will work just fine. And the whole point is that why start from scratch and then try to catch up to something that already works? (Netscape warning alarm blares :)

Ok, enough beating of this dead horse...

Timbojones said:

"In particular p4v is crap at big integrations, I always use p4win for those"

/agree that p4v is crap at big integrations, but I find p4win is also crap at big integrations, so I always use the command line.

Uxorious said:

Did you see that in the new 2008.1 release, P4Win is not available.
Or rather it's hidden. You can download it from their FTP: ftp://ftp.perforce.com/perforce/r08.1/bin.ntx86/p4winst.exe

jschroedl said:

I gotta agree on all of these points. In my experience p4v is crap -I develop for Windows, Mac and Linux and miss the Windows UI on the other platforms.

I'm fully addicted to the fast keyboard-triggered diff from the revision history dialog. Amen again on the Find File dialog.

I must be too stupid to use the timelapse view -- sure is a pretty picture but good luck getting anything truly useful from it. It's never shown me anything interesting.

Are you listening Perforce?! The Java UI utterly blows.

j

Timbojones said:

On the revision history dialog: agreed that it's annoying that you can't diff 2 non-consecutive revisions directly. OTOH I find the P4Win dialog annoying because you have to select 2 revisions. In the p4v dialog, Ctrl-D does 'diff against previous revision' which is by far the most common operation for me.

On integrate: in my experience -t (integrate file type changes) should almost always be enabled but default to off. -i (create integration history if it doesn't exist) or -d (re-add deleted files) are necessary only rarely, but I've never encountered a situation where p4 warned that one of these flags was needed and I needed to do something other than add the flag and repeat the operation.

On focus: I find that when you open a tab, the cursor is generally in the right place, but if you switch between already-open tabs, it never is. Alt-Tabbing has focus issues also.

Ildefonzo Arocha said:

I started using Perforce about a 18 months ago, I tried both clients P4Win and P4V, I found the UI from P4V cleaner and more intuitive to use as the one from P4Win (which I found too clutterd). One thing I must agree on is that the UI of P4Win is faster and more responsive (p4V on Terminal Server or Citrix just sucks). Still, I choose P4V and haven't a problem with it since then, as every thing it just a matter of getting used to it.

p4v gets better and better, as you said previously:

"We can press CTRL-F for find, but the focus is not in the edit dialog for some reason so I have to press TAB to highlight it."

I noted this too, submitted a enhancement request, and saw it implemented in the new release from p4v from yesterday.

If you had two products that are meant to do the same thing (p4win and p4v), one runs only in Windows and the other runs in Windows, Linux and MacOS ... would you continue investing money and resources on further developing both? Or retire the less capable of both and concentrate on the one which gives you a better market share? This is a no brainer.

Jim Tilander said:

Ildefonzo,

That sounds good as far as fixes for p4v. But the point I'm trying to make is that they've been working on p4v now for years and it's still in the sorry state that it is. Meanwhile, p4win was the big reason why we started to use perforce in the first place some odd 6 years ago. Given that track record, I'm not too terribly inclined to just switch application, to an inferior one at that and hope that they "fix" it with each release.

Notice the similarities with how Netscape threw their lead in the browser market when they decided to throw away *all* their code and start over from scratch?

About the cross platform-ness. That is not what I'm debating here. I can see the value from perforce's side in that. But not from the users! I want my native looking controls. I want my native feel. Look how firefox tried to do non-native controls and were forced to cave and provide native controls in the end. If there were a standard look and feel across all platforms, across all applications, I would buy this, but there just isn't (Motiv anyone? :)


Ildefonzo said:

I see your point. I don't agree 100% though, the issue here should be functionality and usability, and luckly Perforce is working on and improving these. p4win is not retired, but only in maintenance mode, which means bugs are been fixed; so you can wait till p4v reaches the state you desire and then swap. If you are using Perforce just because of p4win, than you are using the wrong product, furthermore choosing an SCM by its looks is wrong. My 2 cents :-)

Leave a comment