in src/com/intellij/vssSupport/commands/HistoryParser.java [45:135]
public static ArrayList<SubmissionData> parse( final String content )
{
ArrayList<SubmissionData> changes = new ArrayList<>();
String[] lines = LineTokenizer.tokenize( content, false );
int order = 0;
for( int i = 0; i < lines.length; i++ )
{
// For folder-wide operations support only labelling
if( lines[ i ].indexOf( FOLDER_LABEL_SECTION_PREFIX_SIG ) != -1 )
{
// !**********************
// !Label: "Label with..."
// !User: Lloix Date: 2-05-07 Time: 5:01p
// !Labeled
// !Label comment: ...Some comment
if( i + 4 < lines.length && lines[ i + 3 ].indexOf( FILE_LABELLED_SIG ) != -1 )
{
SubmissionData change = new SubmissionData();
change.order = order++;
change.submitter = parseActor( lines[ i + 2 ] );
change.changeDate = parseDateTime( lines[ i + 2 ] );
change.action = FILE_LABELLED_SIG;
change.label = parseLabel( lines[ i + 1 ] );
change.comment = parseComment( lines, i + 4 );
changes.add( change );
}
}
else
if( lines[ i ].indexOf( VERSION_SECTION_PREFIX_SIG ) != -1 )
{
// !***************** Version 6 *****************
// !User: Lloix Date: 13-11-06 Time: 5:52p
// !Checked in $/VssTest/SRC/Dir1
// !Comment: New comment
// or
// !***************** Version 6 *****************
// !Label: <label>
// !User: Lloix Date: 13-11-06 Time: 5:52p
// !Labelled
// !Label Comment: New comment
if( i + 3 < lines.length )
{
SubmissionData change = new SubmissionData();
change.version = parseVersion( lines[ i ] );
change.order = order++;
if( lines[ i + 1 ].indexOf( LABEL_SIG ) != -1 )
{
change.label = parseLabel( lines[ i + 1 ] );
i++;
}
change.submitter = parseActor( lines[ i + 1 ] );
change.changeDate = parseDateTime( lines[ i + 1 ] );
change.action = parseAction( lines[ i + 2 ] );
change.comment = parseComment( lines, i + 3 );
changes.add( change );
}
}
else
if( lines[ i ].indexOf( FILE_SECTION_SIG ) != - 1 )
{
// !***** File1.java *****
// !Version 6
// !User: Lloix Date: 13-11-06 Time: 5:52p
// !Checked in $/VssTest/SRC/Dir1
// !Comment: New comment
if( i + 3 < lines.length )
{
SubmissionData change = new SubmissionData();
change.order = order++;
change.submitter = parseActor( lines[ i + 2 ] );
change.version = lines[ i + 1 ].substring( VERSION_SIG.length() );
change.changeDate = parseDateTime( lines[ i + 2 ] );
change.action = parseAction( lines[ i + 3 ] );
change.comment = parseComment( lines, i + 4 );
changes.add( change );
}
}
}
// Changes for "Labeled" operation are given without version id (since
// they do not the version given on the previous checkin operation).
// Assign version ids for these operations in the backward order.
updateEarlierChanges( changes );
return changes;
}