Как я могу просматривать различия или, по крайней мере, более старые версии определенных файлов с помощью etckeeper?

С GNU find и GNU cpio:

find /path/to/aim-db-dir -name .svn -prune -o -print0 | cpio -padmv0 /path/to/aim-db-dir_nosvn

С rsync:

rsync -av -exclude=.svn /path/to/aim-db-dir/ /path/to/aim-db-dir_nosvn

Косая черта в конце /path/to/aim-db-dir/ важен, без него каталог с именем aim-db-dir создается в aim-db-dir_nosvn.

В GNU tar:

tar cpf - --exclude-vcs -C /path/to/aim-db-dir . | tar xvpf - -C /path/to/aim-db-dir_nosvn

Существует ограничение на максимальную длину путей к файлам, которые вы можете копировать с помощью tar, исходя из ограничения базового PAX формат.

0
07.08.2017, 01:27
2 ответа

По умолчанию с etckeeper/etcявляется репозиторием git, поэтому вы можете использовать инструменты git для просмотра его содержимого (и изменений ). Например, вы можете использоватьgitk(после его установки )для просмотра истории репозитория, а если вы хотите сосредоточиться на конкретном файле, вы можете указать его в командной строке:

cd /etc
gitk apt/sources.list &

Поскольку вы являетесь пользователем KDE,qgitможет показаться вам более удобным.

4
28.01.2020, 02:19

Я просто использую git logи git showили git diff. например.

# git log --oneline /etc/squid/squid.conf
907df30 saving uncommitted changes in /etc prior to apt run
a612769 daily autocommit
6d45b99 saving uncommitted changes in /etc prior to apt run
0f21707 daily autocommit
9a95a9b saving uncommitted changes in /etc prior to apt run
b2518f4 daily autocommit
338b4a7 daily autocommit
862d5e6 committing changes in /etc after apt run
ff6a8fd daily autocommit
2d64d79 saving uncommitted changes in /etc prior to apt run
7e3bb0e Initial commit


# git diff a612769 907df30 /etc/squid/squid.conf
diff --git a/squid/squid.conf b/squid/squid.conf
index 0e08217..e630ed9 100644
--- a/squid/squid.conf
+++ b/squid/squid.conf
@@ -7876,9 +7876,3 @@ forwarded_for off
 #  not all I/O types supports large values (eg on Windows).
 #Default:
 # Use operating system limits set by ulimit.
-
-#httpd_accel_host virtual
-#httpd_accel_port 80
-#httpd_accel_with_proxy on
-#httpd_accel_uses_host_header on
-

Если бы мне нужно было получить полное содержимое конкретной версии файла, я бы использовалgit ls-tree(для получения sha1 файлового блоба )и git cat-fileдля его вывода. например.

# git cat-file blob "$(git ls-tree a612769 /etc/squid/squid.conf | 
                       awk '{print $3}')" > /tmp/squid.conf.a612769
2
28.01.2020, 02:19

Теги

Похожие вопросы