TMate replacement

Hello everyone,

Now that the build 6951 is out, it's high time to look at the new committed/incoming
changes functionality and to judge whether it's an adequate replacement for
TMate. We've done most of the things we had planned; some features that are
still planned to be added are:
- read/unread changelist support
- support for distinguishing CVS changelists by branch
- (maybe) optional possibility to load changes history from TeamCity rather
than the VCS server to reduce VCS load (particularly for CVS)
- display of "Update Project" results as a list of changelists, in addition
to the current tree grouped by status

With this in mind, are there any use cases that are covered by TMate but
not covered by IDEA's functionality?

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


85 comments
Comment actions Permalink

Looks to be there in #6981. Better, really, since it looks like you can choose just which incoming changelists to update. I will note that I haven't tried it yet, so I can't promise it's working yet.

--Dave Griffith

0
Comment actions Permalink

Yes, a button to update a single changelist is there since long. But what I'm looking for is a button to update ALL changelists at once. I don't want to select/update every single changelist.

0
Comment actions Permalink

Hello Taras,

In Selena EAP #6891, my "Incoming" pane stays populated, while I've just
done a full update to HEAD.


The "Incoming" view is refreshed asynchronously, so if you've just done
an update, the changes will be visible. If all the background processing
is completed and the pane still has items, please file a JIRA issue.

This could be related to the VFS sync problems - which VCS are you using?

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Hello Dmitry,

The "Incoming" view is refreshed asynchronously, so if you've just
done an update, the changes will be visible. If all the background
processing is completed and the pane still has items, please file a
JIRA issue.


I was using SVN in above situation. I did multiple updates to HEAD etc, only
to have the incoming list still populated.
I also explicitly "refreshed" the incoming view - multiple times.
Indeed the propblem seems similar to the sync problems reported by Sascha
and others. The only thing that could solve it for me was restarting IDEA.

IIRC there are already similar JIRA issues.

-tt


0
Comment actions Permalink

Hello Martin,

And when we are at that issue: Would it be possible to have an 'update
project' button in the 'incoming' pane? It would be very handy to
first check what will be updated and then update it all at once (and
then seeing everything vanish from the 'incoming' pane of course...).


JIRA issue?

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Hello Dmitry,

1)
Maybe it's me, but I find the "Update Changelist" action label slightly confusing.
For me, the first though was that it would "update" the "incoming changelist",
in other words, would to the same thing as the "Refresh" action.

While I think I understand the current choice, I think a label containing
"retrieve", "apply" or a similar verb would be more clear.

2)
When the selected changelist depends on another, IDEA will present a popup
asking if I want to retrieve the other change as well.
Some more information would be welcome: the "other changelist" might contain
1000s of changes, I'd like to know what I can expect.

-tt


0
Comment actions Permalink

Hello Taras,

1)
Maybe it's me, but I find the "Update Changelist" action label
slightly confusing.
For me, the first though was that it would "update" the "incoming
changelist",
in other words, would to the same thing as the "Refresh" action.
While I think I understand the current choice, I think a label
containing "retrieve", "apply" or a similar verb would be more clear.


Agreed.

When the selected changelist depends on another, IDEA will present a popup
asking if I want to retrieve the other change as well.
Some more information would be welcome: the "other changelist" might
contain 1000s of changes, I'd like to know what I can expect.


It will not download the entire "other changelist". It will update the files
in the selected changelist to the latest version, which will include the
modifications done in the "other changelist".

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Hello Dmitry,

>> When the selected changelist depends on another, IDEA will present a
>> popup
>> asking if I want to retrieve the other change as well.
>> Some more information would be welcome: the "other changelist" might
>> contain 1000s of changes, I'd like to know what I can expect.

It will not download the entire "other changelist". It will update the
files in the selected changelist to the latest version, which will
include the modifications done in the "other changelist".


Indeed. After actually reading the popup text it's clear.

Another thought: the "Outdated version" editor title bar could allow me to
navigate to the (incoming) changelist that contained the change.

-tt


0
Comment actions Permalink

Hello Taras,

Another thought: the "Outdated version" editor title bar could allow
me to navigate to the (incoming) changelist that contained the change.


JIRA issue?

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

I'm also still seing this problem in #6981. I suspect it's related to branch detection in CVS.

0
Comment actions Permalink

Hello Gordon,

I'm also still seing this problem in #6981. I suspect it's related to
branch detection in CVS.


If you had some incoming changes history left over from a previous build,
you should delete the system\vcsCache directory and refresh the committed
changes again, in order to download correct branch information for CVS changes.

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Okay, trying that...

0
Comment actions Permalink

I'm getting socket read timeouts during the Committed Changes refresh.

2007-05-28 11:03:58,965 INFO - ommitted.CommittedChangesCache - Initializing cache for com.intellij.cvsSupport2.connections.pserver.PServerCvsSettings@492f072e|src
2007-05-28 11:03:59,012 INFO - ort2.javacvsImpl.io.ReadThread - Starting CvsReadThread com.intellij.cvsSupport2.javacvsImpl.io.ReadThread@4ad8d2, atEnd: false, firstIndex: 0, lastIndex: 0, exception: null, closed: false
2007-05-28 11:05:05,935 INFO - ort2.javacvsImpl.io.ReadThread -
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:254)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at com.intellij.cvsSupport2.javacvsImpl.io.ReadThread.run(ReadThread.java:77)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:0)
2007-05-28 11:05:05,935 INFO - ort2.javacvsImpl.io.ReadThread - Stopping CvsReadThread com.intellij.cvsSupport2.javacvsImpl.io.ReadThread@4ad8d2, atEnd: false, firstIndex: 37, lastIndex: 37, exception: java.net.SocketTimeoutException: Read timed out, closed: false

Edit: I've increased the timeout to 5 minutes and I'm trying it again with a clean vcsCache.

0
Comment actions Permalink

The 5min timeout seems to have solved the timeout error.

It took 28 minutes to complete the refresh with an initial history of 14 days. This mostly due to the repo being quite old (6 years, I think) and has gone through a number of directory restructurings and very many branches, some of which existed for many months at a time with significant development occurring on multiple branches. Is there anything you can do to improve the performance?

Files added on a branch show a commit message of "file was initialled added on branch " for the branch as well as the actual commit message on the correct branch. Even though the files in my project are checked out from two branches, the Incoming Changes window still shows commits for , which seems to correspond to HEAD. I don't really want to see those commits since I'm not working on HEAD. Also, it should be called HEAD and not ]]>. It's also showing incoming commits for a branch that I don't have checked out.

It's still showing some isolated commits that should definitely be in my working copy. I'll see if I can find anything out of the ordinary about these commits or their file histories.

0
Comment actions Permalink

It seems to be treating newer revisions on other branches as an indication that there are incoming changes for that file. For instance, I have revision 1.10 checked out which was branched to FOOBAR_BRANCH and the file has that sticky tag in my working copy. However, revision 1.11 was created a few days ago and this is being seen as a new incoming revision even though if I do a CVS update I would never get that revision until I reset my sticky tags to go back to HEAD. Similarly for branches of branches, "newer" revisions in the second branch are being seen as incoming revisions for the first branch.

0
Comment actions Permalink

Hello Gordon,

It seems to be treating newer revisions on other branches as an
indication that there are incoming changes for that file. For
instance, I have revision 1.10 checked out which was branched to
FOOBAR_BRANCH and the file has that sticky tag in my working copy.
However, revision 1.11 was created a few days ago and this is being
seen as a new incoming revision even though if I do a CVS update I
would never get that revision until I reset my sticky tags to go back
to HEAD. Similarly for branches of branches, "newer" revisions in the
second branch are being seen as incoming revisions for the first
branch.


Do you now see correct branch indication for all changelists in Committed
changes?

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Dmitriy

This looks great! It looks like it's not "branch-aware" yet, though? I have revision 1.123.2.3 on branch PARENTS_PORTAL_BRANCH checked out, but it is telling me it is outdated by revision 1.124 on the trunk.

Thanks!

Todd

0
Comment actions Permalink

Do you now see correct branch indication for all
changelists in Committed changes?


Yes. HEAD commits are marked as ]]> and commits on branches have the correct name.

0
Comment actions Permalink

Okay, more information. I just updated my project from CVS and there are commits from yesterday showing in Incoming changes. I know for a fact that I have these revisions in my working copy.

However, only some of the commits from yesterday on this branch are showing in Incoming changes. They have at least one file which was added on the branch and does not exist on HEAD yet. These files have "Attic" at the end of their path in the Changed Files list. e.g. modelfilters.config (C:\dev\performasure\purt1\src\dist\config\agent\Attic). The commit from yesterday on this branch which does NOT appear in the Incoming changes only changed files which already existed on HEAD.

0
Comment actions Permalink

This is in addition to commits from newer revisions on other branches.

0
Comment actions Permalink

Dmitry, I'm not sure whether this has been mentioned yet, or whether it is planned for future versions, but it would be really useful to be able to nest the filters and groupings. For example, select the Branch to be used, and then be able to filter and group by User within Structure, etc. If these filters and groupings could be nested in any order, it would make the whole business much more useful and flexible.

To save screen space, this could be done by re-orderable drop-down lists...?

Message was edited by:
Dave Lorde

0
Comment actions Permalink

Hello Dave,

Dmitry, I'm not sure whether this has been mentioned yet, or whether
it is planned for future versions, but it would be really useful to be
able to nest the filters and groupings. For example, select the Branch
to be used, and then be able to filter and group by User within
Structure, etc. If these filters and groupings could be nested in any
order, it would make the whole business much more useful and flexible.


It wasn't originally planned. Your example (branch -> user/structure) is
about the only useful example of nested filtering that I can imagine. In
general, I prefer to avoid over-complicating the interface for the purpose
of adding flexibility that no one actually would use for anything.

We'll think how your case could be handled without introducing extra complexity.

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Thanks for considering it :)

0
Comment actions Permalink

Selena #7002: My Incoming Changes window is empty :)

0

Please sign in to leave a comment.