our team is faced with an incomprehensible problem

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue May 2 22:32:30 UTC 2023


So, we do some special encoding of file path that get too long (to 
accommodate limited OS/Filesystem), the backup process may push a 
filename above this limit, making it use a different directory.

I just sent a fix for this issue alongside and associated test. This 
should make it into 6.4.3 due to be tagged this week.

Thank you very much for the report !

On 4/28/23 14:40, Pierre-Yves David wrote:
> Hi,
>
> You seems to hit a bug with some internal operation in Mercurial whose 
> implementation details were changed in 6.4. I am also a bit puzzled 
> about how this would happens as the backup should be done in the same 
> directory as the source file, however bug are kind of surprising by 
> nature.
>
> Can you file a bug on https://bz.mercurial-scm.org/ ? I'll have a look.
>
> On 4/27/23 15:41, Иван Федосеев wrote:
>>
>> the server uses the latest version of mercurial 6.4.2
>> python 3.10
>>
>> There are different versions of mercurial on the client, I will make 
>> a conclusion from 6.4.2 python 3.6
>>
>> some of our employees are interrupted by the hg pull command with the 
>> wording:
>>
>> dmitriy.morozov at d-morozov rpg3d % hg pull -u
>> pulling from http://hg.tvorog.bit/rpg3d
>> searching for changes
>> adding changesets
>> adding manifests
>> adding file changes
>> transaction abort!
>> rollback completed
>> abort: No such file or directory: 
>> '/Users/dmitriy.morozov/var/rpg3d/.hg/store/dh/unity/assets/assets/equipmen/man/archer/07/body_arc/journal.backup.body_arcc83b02f2fdf76ab8cabb0b0911ced537efa33cdc.i'
>>
>> I turned on traceback and realized that the file that was not found 
>> was being created in the process. But it is not possible to create it 
>> because of the missing directory.
>>
>> I managed to solve this problem by editing the file 
>> */usr/lib64/python3.6/site-packages/mercurial/util.py*
>> String number is *1966*
>>
>>     else:
>>         try:
>> *            destpath = os.path.dirname(dest)
>>             os.makedirs(destpath, exist_ok=True)
>> *
>>             shutil.copyfile(src, dest)
>>             if copystat:
>>                 # copystat also copies mode
>>                 shutil.copystat(src, dest)
>>             else:
>>                 shutil.copymode(src, des
>>
>> after making edits, the problem is not observed. But I don't 
>> understand why this error appears and why journal files are 
>> created.backup
>> the error also does not depend on http/ssh server usage
>> -- 
>> Иван Федосеев
>> agestart at gmail.com
>> +7-960-327-3301
>> ООО Бит.Геймс Инжиниринг
>>
>> _______________________________________________
>> Mercurial mailing list
>> Mercurial at lists.mercurial-scm.org
>> https://lists.mercurial-scm.org/mailman/listinfo/mercurial
>
-- 
Pierre-Yves David



More information about the Mercurial mailing list