Avoid spamming the external differ
"kirillmueller" <[email protected]> Sat, 09 Dec 2006 21:41:38 -0000
| Newsgroups | gmane.comp.version-control.cvs.gui.devel |
|---|---|
| Message-ID | <[email protected]> |
--h1rsaosGXWezi3yUi3YniCeiOe5AOzniow6lyNg
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Hi,
with the new "bulk checkout" feature for cvs diff with the external
differ, there is a problem when too many different files (say, 100)
are found. The differs I've tested (Araxis Merge and WinMerge)
eventually crash. I feel that the problem is not the number of files,
but the frequency of invocations, especially when all pairs of files
are sent to the same instance of the external differ. In version 2.4,
WinMerge achieves this through checking whether there's another
instance of WinMerge running, and communicating with the other
instance through some protocol, presumably DDE. Araxis Merge has its
own launcher that communicates with the application through COM.
Sleeping between invocations doesn't help much, at least not with
Araxis Merge. I've tested timeouts of as much as one second, which
would unneccessarily slow down diffing in most cases.
I would like to offer several options for discussion.
1. Pop up a message box every 10 files. (We could make the number of
files configurable.) The message box would also offer the opportunity
to abort in case the user didn't expect so many differences -- p.ex.
after an ill-formed diff request. (Happened to me several times :-) )
Rather annoying.
2. Implement custom code for WinMerge and Araxis Merge that would
communicate with the tools directly through DDE or COM and wait
between invocations. We can still offer the command-line approach for
other differs. This would work for WinCvs only, though.
3. Implement an option "Wait for external diff to exit", default to
off. (Or, even better, "Wait for xx seconds for external diff to
exit", which would handle the WinMerge case as well.) Pretty much
platform-dependent, too.
4. Use some kind of "basket" or "flag" automatically if the number of
files reaches some limit. Configurable if necessary. (Outlook 2003 and
Explorer in Windows XP show a message when trying to open more than 10
elements/files at once.)
5. ???
Personally, I prefer 2. for performance and 4. for usability :-)
Cheers,
Kirill
--h1rsaosGXWezi3yUi3YniCeiOe5AOzniow6lyNg
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<!-- Network content -->
<body style="background-color: #ffffff;">
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="width:655px; position:relative;">
<div id="ygrp-msg" style="width: 490px; padding: 0 15px 0 0; float:left; z-index:1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id="ygrp-text">
<p>Hi,<br>
<br>
with the new "bulk checkout" feature for cvs diff with the external<br>
differ, there is a problem when too many different files (say, 100)<br>
are found. The differs I've tested (Araxis Merge and WinMerge)<br>
eventually crash. I feel that the problem is not the number of files,<br>
but the frequency of invocations, especially when all pairs of files<br>
are sent to the same instance of the external differ. In version 2.4,<br>
WinMerge achieves this through checking whether there's another<br>
instance of WinMerge running, and communicating with the other<br>
instance through some protocol, presumably DDE. Araxis Merge has its<br>
own launcher that communicates with the application through COM.<br>
<br>
Sleeping between invocations doesn't help much, at least not with<br>
Araxis Merge. I've tested timeouts of as much as one second, which<br>
would unneccessarily slow down diffing in most cases.<br>
<br>
I would like to offer several options for discussion.<br>
<br>
1. Pop up a message box every 10 files. (We could make the number of<br>
files configurable.<wbr>) The message box would also offer the opportunity<br>
to abort in case the user didn't expect so many differences -- p.ex.<br>
after an ill-formed diff request. (Happened to me several times :-) )<br>
Rather annoying.<br>
<br>
2. Implement custom code for WinMerge and Araxis Merge that would<br>
communicate with the tools directly through DDE or COM and wait<br>
between invocations. We can still offer the command-line approach for<br>
other differs. This would work for WinCvs only, though.<br>
<br>
3. Implement an option "Wait for external diff to exit", default to<br>
off. (Or, even better, "Wait for xx seconds for external diff to<br>
exit", which would handle the WinMerge case as well.) Pretty much<br>
platform-dependent, too.<br>
<br>
4. Use some kind of "basket" or "flag" automatically if the number of<br>
files reaches some limit. Configurable if necessary. (Outlook 2003 and<br>
Explorer in Windows XP show a message when trying to open more than 10<br>
elements/files at once.)<br>
<br>
5. ???<br>
<br>
Personally, I prefer 2. for performance and 4. for usability :-)<br>
<br>
Cheers,<br>
<br>
Kirill<br>
<br>
</p>
</div>
<!--~-|**|PrettyHtmlStart|**|-~-->
<span width="1" style="color: white;">__._,_.___</span>
<!-- Start the section with Message In topic -->
<div id="ygrp-actbar">
<span class="left">
<a href="http://groups.yahoo.com/group/cvsgui-dev/message/1465;_ylc=X3oDMTM0ZGdrcGk5BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBG1zZ0lkAzE0NjUEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMTY1NzAwNTc4BHRwY0lkAzE0NjU-">
Messages in this topic </a> (<span class="bld">1</span>)
</span>
<a href="http://groups.yahoo.com/group/cvsgui-dev/post;_ylc=X3oDMTJwMXNrZ2UyBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBG1zZ0lkAzE0NjUEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMTY1NzAwNTc4?act=reply&messageNum=1465">
<span class="bld">
Reply </span> (via web post)
</a> |
<a href="http://groups.yahoo.com/group/cvsgui-dev/post;_ylc=X3oDMTJlZ3Rxb3NyBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTE2NTcwMDU3OA--" class="bld">
Start a new topic </a>
</div>
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vitnav">
<a href="http://groups.yahoo.com/group/cvsgui-dev/messages;_ylc=X3oDMTJlOXFkYzhlBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTE2NTcwMDU3OA--">Messages</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/files;_ylc=X3oDMTJmbDFxb2I4BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzExNjU3MDA1Nzg-">Files</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/photos;_ylc=X3oDMTJlcjdpMWRnBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTE2NTcwMDU3OA--">Photos</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/links;_ylc=X3oDMTJmNWsyNG4xBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzExNjU3MDA1Nzg-">Links</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/database;_ylc=X3oDMTJjaG80NW9qBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2RiBHN0aW1lAzExNjU3MDA1Nzg-">Database</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/polls;_ylc=X3oDMTJmZDgwcDgyBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzExNjU3MDA1Nzg-">Polls</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/members;_ylc=X3oDMTJlcW5tamRtBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTE2NTcwMDU3OA--">Members</a>
| <a href="http://groups.yahoo.com/group/cvsgui-dev/calendar;_ylc=X3oDMTJkMHNyb3EyBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2NhbARzdGltZQMxMTY1NzAwNTc4">Calendar</a>
</div>
<!-- |**|end egp html banner|**| -->
<!-- Do not have place to put it yet -->
<div id="ygrp-grft">
</div>
<!-- yahoo logo -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-ft">
<a href="http://groups.yahoo.com/;_ylc=X3oDMTJkdGhvb3JhBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMTY1NzAwNTc4">
<img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br>
<a href="http://groups.yahoo.com/group/cvsgui-dev/join;_ylc=X3oDMTJmaXI0bnI2BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzExNjU3MDA1Nzg-">Change settings via the Web</a> (Yahoo! ID required) <br>
Change settings via email: <a href="mailto:[email protected]?subject=Email Delivery: Digest">Switch delivery to Daily Digest</a> | <a href = "mailto:[email protected]?subject=Change Delivery Format: Traditional">Switch format to Traditional</a> <br>
<a href="http://groups.yahoo.com/group/cvsgui-dev;_ylc=X3oDMTJkY2M2NGRzBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMTY1NzAwNTc4">
Visit Your Group
</a> |
<a href="http://docs.yahoo.com/info/terms/">
Yahoo! Groups Terms of Use </a> |
<a href="mailto:[email protected]?subject=">
Unsubscribe </a>
</div> <!-- |**|end egp html banner|**| -->
</div> <!-- ygrp-msg -->
<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-sponsor" style="width:140px;float: left; clear: none; margin-left: 5px; background:white; margin-bottom:25px ;position:absolute; top:0; right: 0;">
<!-- Network content -->
<!-- Start vitality -->
<div id="ygrp-vital">
<a href="http://groups.yahoo.com/group/cvsgui-dev;_ylc=X3oDMTJlbnB2YmpoBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE2NTcwMDU3OA--">
Visit Your Group </a>
</div>
<div id="hd">SPONSORED LINKS</div>
<div id="ov">
<ul>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjN2R0OTRmBF9TAzk3MzU5NzE0BF9wAzEEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjU3MDA1Nzk-?t=ms&k=Software+development+services&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=7x2qo6dMYy1p5AU1pt1tiQ">Software development services</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjYWJmc3M3BF9TAzk3MzU5NzE0BF9wAzIEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjU3MDA1Nzk-?t=ms&k=Software+development&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=BN1lrlsQSEiIXBpRBgFwvg">Software development</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjN3Z0bjA2BF9TAzk3MzU5NzE0BF9wAzMEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjU3MDA1Nzk-?t=ms&k=Development+software&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=tCpQXu3D1f1U1uy5lsC3_g">Development software</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjbjg0MTFqBF9TAzk3MzU5NzE0BF9wAzQEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjU3MDA1Nzk-?t=ms&k=Software+development+company&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=vprGpfTz1GxuQRXlltd5Og">Software development company</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjc25tZGVqBF9TAzk3MzU5NzE0BF9wAzUEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjU3MDA1Nzk-?t=ms&k=Custom+software+development&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=GblHBdeKJR4WCTYIwY_tYA">Custom software development</a></li>
</ul>
</div>
<!-- Network content -->
<div id="nc">
<div class="ad">
<div id="hd1">Yahoo! Mail</div>
<p><a href="http://us.ard.yahoo.com/SIG=12hk27g36/M=493064.8985657.9760727.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1165707779/A=3848571/R=0/SIG=12jar7gl1/*http://us.rd.yahoo.com/evt=42412/*http://advision.webevents.yahoo.com/handraisers">Drag & drop</a></p>
<p>With the all-new</p>
<p>Yahoo! Mail Beta</p> </div>
<div class="ad">
<div id="hd1">New business?</div>
<p><a href="http://us.ard.yahoo.com/SIG=12h2r2ult/M=493064.8985663.9760769.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1165707779/A=3848640/R=0/SIG=131an6mds/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2002&cmp=Yahoo&ctv=Groups1&s=Y&s2=&s3=&b=50">Get new customers.</a></p>
<p>List your web site</p>
<p>in Yahoo! Search.</p> </div>
<div class="ad">
<div id="hd1">Y! Messenger</div>
<p><a href="http://us.ard.yahoo.com/SIG=12hd5g8v8/M=493064.8985659.9760753.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1165707779/A=3848585/R=0/SIG=12ceqob45/*http://us.rd.yahoo.com/evt=42403/*http://messenger.yahoo.com/feat_conf.php">All together now</a></p>
<p>Host a free online</p>
<p>conference on IM.</p> </div>
</div>
</div> <!-- |**|end egp html banner|**| -->
<div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=2493245/grpspId=1705007181/msgId=1465/stime=1165700578/nc1=3848571/nc2=3848640/nc3=3848585" width="1" height="1"> <br>
<span style="color: white;">__,_._,___</span>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mlmsg {font-size:13px; font-family: arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;*font-size:100%;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family: Georgia;
}
#ygrp-text p{
margin: 0 0 1em 0;
}
#ygrp-tpmsgs{
font-family: Arial;
clear: both;
}
#ygrp-vitnav{
padding-top: 10px;
font-family: Verdana;
font-size: 77%;
margin: 0;
}
#ygrp-vitnav a{
padding: 0 1px;
}
#ygrp-actbar{
clear: both;
margin: 25px 0;
white-space:nowrap;
color: #666;
text-align: right;
}
#ygrp-actbar .left{
float: left;
white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
font-family: Verdana;
font-size: 77%;
padding: 15px 0;
}
#ygrp-ft{
font-family: verdana;
font-size: 77%;
border-top: 1px solid #666;
padding: 5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom: 10px;
}
#ygrp-vital{
background-color: #e0ecee;
margin-bottom: 20px;
padding: 2px 0 8px 8px;
}
#ygrp-vital #vithd{
font-size: 77%;
font-family: Verdana;
font-weight: bold;
color: #333;
text-transform: uppercase;
}
#ygrp-vital ul{
padding: 0;
margin: 2px 0;
}
#ygrp-vital ul li{
list-style-type: none;
clear: both;
border: 1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight: bold;
color: #ff7900;
float: right;
width: 2em;
text-align:right;
padding-right: .5em;
}
#ygrp-vital ul li .cat{
font-weight: bold;
}
#ygrp-vital a {
text-decoration: none;
}
#ygrp-vital a:hover{
text-decoration: underline;
}
#ygrp-sponsor #hd{
color: #999;
font-size: 77%;
}
#ygrp-sponsor #ov{
padding: 6px 13px;
background-color: #e0ecee;
margin-bottom: 20px;
}
#ygrp-sponsor #ov ul{
padding: 0 0 0 8px;
margin: 0;
}
#ygrp-sponsor #ov li{
list-style-type: square;
padding: 6px 0;
font-size: 77%;
}
#ygrp-sponsor #ov li a{
text-decoration: none;
font-size: 130%;
}
#ygrp-sponsor #nc {
background-color: #eee;
margin-bottom: 20px;
padding: 0 8px;
}
#ygrp-sponsor .ad{
padding: 8px 0;
}
#ygrp-sponsor .ad #hd1{
font-family: Arial;
font-weight: bold;
color: #628c2a;
font-size: 100%;
line-height: 122%;
}
#ygrp-sponsor .ad a{
text-decoration: none;
}
#ygrp-sponsor .ad a:hover{
text-decoration: underline;
}
#ygrp-sponsor .ad p{
margin: 0;
}
o {font-size: 0; }
.MsoNormal {
margin: 0 0 0 0;
}
#ygrp-text tt{
font-size: 120%;
}
blockquote{margin: 0 0 0 4px;}
.replbq {margin:4}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html><!--End group email -->
--h1rsaosGXWezi3yUi3YniCeiOe5AOzniow6lyNg--