[Clp] Finding the latest code changes in the SVN system

Robin Whittle rw at firstpr.com.au
Thu May 5 02:35:15 EDT 2016


On 2016-05-01 ("Solver seems to work ...") John Forrest mentioned on the
list that he had modified the code of CLP to fix a problem I
encountered.  This is an account of how I found the changes he made,
using my Windows 7 desktop machine, via TortoiseSVN:

  https://tortoisesvn.net/downloads.html

Once installed, it operates as an extension to Windows Explorer - so
there is no special program to run.

I am using CLP stable release 1.16.9 from 2015-10-10:

   http://www.coin-or.org/download/source/Clp/

Since then there has been a "stable release number" 1.16.10 - which is
not to be confused with "stable version number" 1.16:

   http://www.coin-or.org/projects/Clp.xml

The source code for stable releases to 1.16.10 can be found at:

   https://projects.coin-or.org/svn/Clp/releases/

The source code for stable versions, to 1.16 can be found at:

   https://projects.coin-or.org/svn/Clp/stable/

I guessed that John's latest changes were in:

   https://projects.coin-or.org/svn/Clp/trunk/Clp/src/

I created a fresh directory with Windows Explorer.  Right-clicking, I
activated the "TortoiseSVN > Repo-browser" menu item and gave it:

   https://projects.coin-or.org/svn/Clp/trunk/

as a starting point.  After a minute or two it displayed an
Explorer-like window with various columns, one of which was "Revision".

This showed directories and files.  The highest number revision was (and
still is as I write this) 2218, for the "Clp" directory.  In the Author
column for this is "forrest" and in the Date column 2016-05-01 and a
time of day.  I don't know if this my local time or the server's.

So the "Clp" directory was clearly the place to look.  Double-clicking
this revealed that the "src" directory was as just described.  So I
double-clicked it too.  So now the program is displaying the contents of:

   https://projects.coin-or.org/svn/Clp/trunk/Clp/src

where there are 187 files and one directory.  Each item has a revision
number, author and date.   Clicking on the Revision heading I could sort
the items by descending revision number and could easily see that both
ClpSolve.cpp and ClpSimplexDual.cpp had been changed as part of revision
2218.

By right-clicking either of these, chose the menu item "Show log".  The
log entry for both was:

  minor changes for infeasible difficult problems

and I could see that that these two files were the ones changed with
revision 2218.  I am not sure were the log is located.  In the top
section of the log file window, I selected the top line for revision
2218 and right-clicked this so I could use the "Compare with previous
revision" menu item.  At first this was for ClpSolve.cpp, and then I
repeated "Show log" step and this step for ClpSimplexDual.cpp.

For ClpSolve.cpp I could easily see that the change involved new lines
inserted after line 1763:

///
           // return if wanted
           if (options.infeasibleReturn() ||
           (moreSpecialOptions_ & 1) != 0)
             return -1;
///

This was just after a section which displayed the infeasibility error
message my program generated, line 1754:

  handler_->message(CLP_INFEASIBLE, messages_)

So this seemed to be what I was looking for.  More on the actual details
of these changes in a separate message.

In ClpSimplexDual.cpp there were two changes, which did not seem to be
directly related to the above change, or to the problem of interminable
running which I was trying to solve.  I later decided that I didn't need
these.  All three changes were part of the one revision, with the one
log entry.

One way to test John's changes would be to build my CLP library entirely
from the current state of the SVN system's trunk directory.  However, I
wanted to keep working with version 1.16.9 and change only what was
necessary to get around the problem.

Back in the first window of TortoiseSVN I shift-clicked to select both
the files and then right clicked to run the "Checkout ..." menu item.  I
acceded to the defaults: (Checkout depth = fully recursive; no Omit
externals; Revision = HEAD revision) and so downloaded the latest
version of these two files to my chosen directory.

There were various other differences, in addition to the changes John
just made, between these latest versions of these two files and their
1.16.9 versions, but I decided that the latest change for ClpSolve.cpp
was not dependent on these.  So I used this latest change as the basis
for changing my version, as I will describe in a subsequent message.

  Robin


More information about the Clp mailing list