<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>57185</bug_id>
          
          <creation_ts>2025-12-10 11:08:47 +0300</creation_ts>
          <short_desc>qmergeinifiles: неполное слияние секций</short_desc>
          <delta_ts>2025-12-11 13:33:10 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>qmergeinifiles</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Божченко Павел Александрович">bozhchenkopa</reporter>
          <assigned_to name="ratkin">ratkinda</assigned_to>
          <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>278783</commentid>
    <comment_count>0</comment_count>
    <who name="Божченко Павел Александрович">bozhchenkopa</who>
    <bug_when>2025-12-10 11:08:47 +0300</bug_when>
    <thetext>1)Для воспроизведения необходимо подготовить два файла:

echo -e &quot;[DEFAULT]\nServerAliveInterval=45\nCompression=yes\n[Database]\nhost=127.0.0.1\nport=3306&quot; &gt; simple1.ini
echo -e &quot;;Комментарий\n[Section1]\n#Ещё\nkey1=value1\nkey2=value with spaces\n&quot; &gt; complex1.ini
echo -e &quot;[Section2];секция с \n#exe=true\nkey3=value3\n[Database];перезапись\nhost=localhost\ntimeout=30&quot; &gt;&gt; complex1.ini

2) после, произвести их слияние, и просмотреть результат
qmeregeinifiles merged.ini simple1.ini complex1.ini
cat merged.ini 

Фактический результат слияния:

[Database]
timeout=30

[Section1]
#Ещё
key2=value with spaces
key1=value1

[Database]
port=3306

[Section2]
#exe=true
key3=value3

[Database]
host=localhost

[DEFAULT]
Compression=yes
ServerAliveInterval=45

[General]
;Комментарий


Ожидаемый результат:
[DEFAULT]
ServerAliveInterval=45
Compression=yes

;Комментарий
[Section1]
#Ещё
key1=value1
key2=value with spaces

[Section2];секция
#exe=true
key3=value3

[Database];перезапись
host=localhost
port=3306
timeout=30

Можно заметить несколько недочётов:
1) Секции дублируются ([Database] продублирована три раза). Большинство современных парсеров обработают это корректно, но не стоит перекладывать задачу на них(https://en.wikipedia.org/wiki/INI_file#Duplicate_names). Это также может вызывать недопонимание при дальнейшем ручном редактировании файлов.
2) Комментарий &quot;;Комментарий&quot; находился в файле complex1.ini перед секцией [Section1], а в выводе попал под секцию [General]
3) Комментарии, находящиеся на одной строке с заголовком секции теряются:
[Database];перезапись -&gt; [Database]
[Section2];секция с -&gt; [Section2]

Воспроизводится на системах (обновлённых до Sisyphus):
Alt Server 11.0 x86-64
Alt Education KDE 11.0 x86-64 
Alt Education XFCE 11.0 x86-64 
Alt Workstation 11.1 x86-64 
Alt Workstation K 11.1 x86-64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278785</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-12-10 11:13:14 +0300</bug_when>
    <thetext>Секции дублироваться не должны.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278790</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-12-10 11:16:02 +0300</bug_when>
    <thetext>(Ответ для Божченко Павел Александрович на комментарий #0)
&gt; 3) Комментарии, находящиеся на одной строке с заголовком секции теряются:
&gt; [Database];перезапись -&gt; [Database]
&gt; [Section2];секция с -&gt; [Section2]
Это хорошо, т.к. невалидные.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278791</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-12-10 11:20:42 +0300</bug_when>
    <thetext>&gt; &gt; 3) Комментарии, находящиеся на одной строке с заголовком секции теряются:
&gt; &gt; [Database];перезапись -&gt; [Database]
&gt; &gt; [Section2];секция с -&gt; [Section2]
&gt; Это хорошо, т.к. невалидные.
Хотя, по формату валидные, но пусть удаляются. Можно считать ожидаемым поведением.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278889</commentid>
    <comment_count>4</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2025-12-11 13:33:10 +0300</bug_when>
    <thetext>qmergeinifiles-3.1.0-alt1 -&gt; sisyphus:

Thu Dec 11 2025 Oleg Solovyov &lt;mcpain@altlinux&gt; 3.1.0-alt1
- merge sections in .ini file (Closes: #57185)
- fix usage (Closes: #57180)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>