Bug 24903 - Проблемы с русскими символами в etckeeper
Summary: Проблемы с русскими символами в etckeeper
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: etckeeper (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Vitaly Chikunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-12 17:45 MSK by Evgeny Sinelnikov
Modified: 2011-01-13 22:09 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeny Sinelnikov 2011-01-12 17:45:03 MSK
При недавнем обновлении возникли проблемы с etckeeper:
[sin@base ~]$ sudo apt-get dist-upgrade
...
Продолжить? [Y/n] 
Получено: 1 http://download.etersoft.ru noarch/addon etercifs 4.6.0-alt1 [4261kB]
Получено 4261kB за 4s (890kB/s).   
fatal: pathspec '"tcb/\321\201\320\270\320\275/shadow"' did not match any files
error: etckeeper failed to commit changes in /etc using git
E: Подпроцесс xargs| (if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi) завершился с ошибкой (1).
E: Ошибка выполнения скрипта xargs| (if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi)

[sin@base ~]$ sudo etckeeper pre-install
fatal: pathspec '"tcb/\321\201\320\270\320\275/shadow"' did not match any files
error: etckeeper failed to commit changes in /etc using git

[sin@base etc]$ sudo etckeeper commit 'saving uncommitted changes in /etc prior to apt run'
fatal: pathspec '"tcb/\321\201\320\270\320\275/shadow"' did not match any files

После указания параметра -x для shabang в /etc/etckeeper/commit.d/40git-rm:
[sin@base etc]$ sudo etckeeper commit 'saving uncommitted changes in /etc prior to apt run'
+ set -e
+ IFS='
'
+ '[' git = git ']'
+ '[' -d .git ']'
++ git ls-files --deleted
+ for file in '$(git ls-files --deleted)'
+ '[' '!' -d '"tcb/\321\201\320\270\320\275/shadow"' ']'
++ dirname '"tcb/\321\201\320\270\320\275/shadow"'
+ dir='"tcb/\321\201\320\270\320\275'
+ flagfile=
+ '[' -d '"tcb/\321\201\320\270\320\275' ']'
+ git rm --quiet '"tcb/\321\201\320\270\320\275/shadow"'
fatal: pathspec '"tcb/\321\201\320\270\320\275/shadow"' did not match any files

Получаем, что проблема таки в Git'е:
$ sudo git ls-files --deleted|grep tcb
"tcb/\321\201\320\270\320\275/shadow"
"tcb/\321\201\320\270\320\275/shadow-"
"tcb/\321\201\320\270\320\275/shadow.lock"

Чтобы было понятней:
$ echo 'obase=16; ibase=8; 321;201;320;270;320;275' |bc
D1
81
D0
B8
D0
BD
$ echo -n син |hexdump
0000000 81d1 b8d0 bdd0

Далее, вот такой подход позволяет обойти проблему:
[sin@base etc]$ sudo git checkout tcb/син/shadow
[sin@base etc]$ sudo git checkout tcb/син/shadow-
[sin@base etc]$ sudo git checkout tcb/син/shadow.lock

После этого 
$ sudo etckeeper commit 'saving uncommitted changes in /etc prior to apt run'
отрабатывает нормально.

Версии git и etckeeper:
[sin@base etc]$ rpm -qi git-core
Name        : git-core                     Relocations: (not relocatable)
Version     : 1.7.3.4                           Vendor: ALT Linux Team
Release     : alt1                          Build Date: Чтв 16 Дек 2010 14:14:55
Install date: Пнд 27 Дек 2010 21:21:49      Build Host: ldv-sisyphus.hasher.altlinux.org
...
[sin@base etc]$ rpm -qi etckeeper
Name        : etckeeper                    Relocations: (not relocatable)
Version     : 0.51                              Vendor: ALT Linux Team
Release     : alt1                          Build Date: Пнд 27 Дек 2010 03:14:45
Install date: Чтв 06 Янв 2011 18:18:28      Build Host: evg-sisyphus.hasher.altlinux.org
...
[sin@base etc]$ rpm -q git-core
git-core-1.7.3.4-alt1
[sin@base etc]$ rpm -q etckeeper
etckeeper-0.51-alt1
Comment 1 Dmitry V. Levin 2011-01-12 20:21:29 MSK
In git commands output, all unprintable characters in paths are quoted.
Comment 2 Evgenii Terechkov 2011-01-13 03:41:21 MSK
Воспроизводится.

Может быть просто git config core.quotepath false ? С ним коммит проходит.
Comment 3 Repository Robot 2011-01-13 22:09:40 MSK
etckeeper-0.51-alt2 -> sisyphus:

* Fri Jan 14 2011 Terechkov Evgenii <evg@altlinux> 0.51-alt2
- Update from upstream (ALT#24903)