Формат .fr3 неудобен при использовании контроля версий
Vasily Grechishnikov
г. Воронеж
Добрый день!
Формат .fr3 чрезвычайно неудобен если используется контроль версий в проекте.
Пример:
Фрагмент diff'а приведен ниже.
=== изменён файл loader/reports/cb/РецептКачествоИЦены.fr3
--- loader/reports/cb/РецептКачествоИЦены.fr3 2008-12-15 13:47:22 +0000
+++ loader/reports/cb/РецептКачествоИЦены.fr3 2009-01-22 05:13:30 +0000
<?xml version="1.0" encoding="utf-8"?>
-<TfrxReport Version="4.6.1" DotMatrixReport="False" IniFile="\Software\Fast Reports" PreviewOptions.Buttons="2047" PreviewOptions.Zoom="1" PrintOptions.Printer="Default" PrintOptions.PrintOnSheet="0" ReportOptions.CreateDate="38148,4866698958" ReportOptions.Description.Text="" ReportOptions.LastChange="39765,6802798843" ScriptLanguage="PascalScript" ScriptText.Text="var
Delta: Extended;
PropFmt: string;
v: boolean;
procedure
SetupForBAVPrint;
begin
SubReportBAV.Visible := True;
if (not <СогласованиеКач>) then begin
Delta := 60;
QltMinHeader.Visible := False;
QltMin.Visible := False;
QltMaxHeader.Visible := False;
QltMax.Visible :=
проблема в том что в поле -<TfrxReport Version="4.6.1" DotMatrixReport="False" IniFile="\Software\Fast
хранятся все настройки FR, плюс скрипты.
Изменение лишь одной опции либо скрипта приводит к изменению строки, а большинстово систем контроля версий оперируют строками как
минимальной структорной единицей исходного текста.
Данные в виде одной строки чрезвычайно трудно анализировать.
Мое предложение вставлять символперевода строки после каждого поля заголовка.
Это очень облегчит использование средств контроля версий.
Я пользуюсь bazaar, но уверен что проблема стоит для 90% систем контроля версий.
<TfrxReport Version="4.6.1"
DotMatrixReport="False"
IniFile="\Software\Fast Reports"
PreviewOptions.Buttons="2047"
PreviewOptions.Zoom="1"
PrintOptions.Printer="Default"
PrintOptions.PrintOnSheet="0"
ReportOptions.CreateDate="38148,4866698958"
ReportOptions.Description.Text=""
ReportOptions.LastChange="39765,6802798843"
ScriptLanguage="PascalScript"
ScriptText.Text="var
Delta: Extended;
PropFmt: string;
v: boolean;
procedure
SetupForBAVPrint;
begin
SubReportBAV.Visible := True;
if (not <СогласованиеКач>) then begin
Delta := 60;
QltMinHeader.Visible := False;
QltMin.Visible := False;
QltMaxHeader.Visible := False;
QltMax.Visible :=
Формат .fr3 чрезвычайно неудобен если используется контроль версий в проекте.
Пример:
Фрагмент diff'а приведен ниже.
=== изменён файл loader/reports/cb/РецептКачествоИЦены.fr3
--- loader/reports/cb/РецептКачествоИЦены.fr3 2008-12-15 13:47:22 +0000
+++ loader/reports/cb/РецептКачествоИЦены.fr3 2009-01-22 05:13:30 +0000
<?xml version="1.0" encoding="utf-8"?>
-<TfrxReport Version="4.6.1" DotMatrixReport="False" IniFile="\Software\Fast Reports" PreviewOptions.Buttons="2047" PreviewOptions.Zoom="1" PrintOptions.Printer="Default" PrintOptions.PrintOnSheet="0" ReportOptions.CreateDate="38148,4866698958" ReportOptions.Description.Text="" ReportOptions.LastChange="39765,6802798843" ScriptLanguage="PascalScript" ScriptText.Text="var
Delta: Extended;
PropFmt: string;
v: boolean;
procedure
SetupForBAVPrint;
begin
SubReportBAV.Visible := True;
if (not <СогласованиеКач>) then begin
Delta := 60;
QltMinHeader.Visible := False;
QltMin.Visible := False;
QltMaxHeader.Visible := False;
QltMax.Visible :=
проблема в том что в поле -<TfrxReport Version="4.6.1" DotMatrixReport="False" IniFile="\Software\Fast
хранятся все настройки FR, плюс скрипты.
Изменение лишь одной опции либо скрипта приводит к изменению строки, а большинстово систем контроля версий оперируют строками как
минимальной структорной единицей исходного текста.
Данные в виде одной строки чрезвычайно трудно анализировать.
Мое предложение вставлять символперевода строки после каждого поля заголовка.
Это очень облегчит использование средств контроля версий.
Я пользуюсь bazaar, но уверен что проблема стоит для 90% систем контроля версий.
<TfrxReport Version="4.6.1"
DotMatrixReport="False"
IniFile="\Software\Fast Reports"
PreviewOptions.Buttons="2047"
PreviewOptions.Zoom="1"
PrintOptions.Printer="Default"
PrintOptions.PrintOnSheet="0"
ReportOptions.CreateDate="38148,4866698958"
ReportOptions.Description.Text=""
ReportOptions.LastChange="39765,6802798843"
ScriptLanguage="PascalScript"
ScriptText.Text="var
Delta: Extended;
PropFmt: string;
v: boolean;
procedure
SetupForBAVPrint;
begin
SubReportBAV.Visible := True;
if (not <СогласованиеКач>) then begin
Delta := 60;
QltMinHeader.Visible := False;
QltMin.Visible := False;
QltMaxHeader.Visible := False;
QltMax.Visible :=
Комментарии
Пользуюсь STARTEAM, те же неудобства - невозможно визуально отследить, что же изменилось в строке длиной в 1..2 кб и более.
Как ни странно но следующий патч делает почто то что я хочу.
Минус не хватает красоты получающегося файла.
И я не совсем понимаю последствия
- SpecChars = ;
+ SpecChars = ;
к чему это может привести.
=== modified file 'Source/frxXML.pas'
--- Source/frxXML.pas 2009-01-26 13:37:41 +0000
+++ Source/frxXML.pas 2009-01-26 11:55:44 +0000
function frxStrToXML(const s: String): String;
const
- SpecChars = ;
+ SpecChars = ;
var
i, lenRes, resI, ch: Integer;
pRes: PChar;
=== modified file 'Source/frxXMLSerializer.pas'
--- Source/frxXMLSerializer.pas 2009-01-26 13:37:41 +0000
+++ Source/frxXMLSerializer.pas 2009-01-26 13:40:20 +0000
except
end;
end;
-
+
begin
{ speed optimized code. affects the speed of loading prepared page in the preview }
len := Length(s);
Value := Copy(s, start, i - start);
Inc(i);
+ if ((Name[1] = #13) and
+ (Name[2] = #10)) then
+ Name := Trim(Copy(Name, 3, 4096));
+
Obj1 := Obj;
{ check multiple properties }
if Flag then
Result := Result + s
else
- Result := Result + ' ' + Add + PropList.Name + '="' + s + '"';
+ Result := Result + ' ' + Add + PropList.Name + '="' + s + '"' +
+ #13 + #10;
end;
if Obj is TfrxCustomMemoView then
Следующий патч - Вы имеете в виду очередной релиз Фаста или что-то другое?
=== modified file 'Source/frxXML.pas'
это формат patch-файлов, работая с системами контроля версий вы должны знать этот формат