adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Нужен скрипт создания файлов .gitkeep
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)*NIX OS
Автор Сообщение
Romani
Гуру
Предупреждений : 1
СообщениеДобавлено: Пн 12-12-16 : 13-03    Заголовок сообщения: Нужен скрипт создания файлов .gitkeep Ответить с цитатой

Тут у нас вроде есть несколько прожженых линуксоидов, так вот, мне нужна помощь.
Как известно, git не трекает пустые папки, единственный путь решения, на сколько я знаю, это держать в таких папках пустые файлики .gitkeep или любой другой. Вот чтобы не создавать все это руками нужен скрипт или команда, да не простой, а такой, чтобы искал не просто пустые папки, а те папки, в которых нет именно файлов.
Есть структура например
folder1/folder2/file.txt
folder1 не содержит файлов, а содержит только папку, обычной командой
Код:
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;

не добавится файл .gitkeep, так как по факту директория не пустая, но с точки зрения git директория пустая и не затрекается, так как наличие директории folder2 в директории folder1 для него не повод трекать файл в директории folder2.
В общем надеюсь не запутал и доходчиво объяснил проблему, помогите решить, очень не хочется руками все проверять перед комитами.

P.S. есть вот такая команда, но она сработала только на определенную вложенность и глубоко не посмотрела.
Код:
find ./ -type d \( -name upload -o -name bitrix \) -prune -exec bash -c '[ "x`find "{}" -maxdepth 1 -type f`" = x ] && touch {}/.gitkeep' \;
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пн 12-12-16 : 14-30    Заголовок сообщения: Ответить с цитатой

В лоб.
Код:
#!/bin/sh

if [ -z "$1" ]; then
   exit 1
fi

list=`find $1  -type d -name '*'`
for i in $list; do
   nonempty=`ls $i`;
   if [ -z "$nonempty" ]; then
      echo "" > $i/.gitkeep
   fi
done
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Romani
Гуру
Предупреждений : 1
СообщениеДобавлено: Пн 12-12-16 : 15-57    Заголовок сообщения: Ответить с цитатой

Не правильно что-то оно работает.
Сделал так
Код:
#!/bin/sh
if [ -z "$1" ]; then
   exit 1
fi

list=`find $1 ! -path "./bitrix/*" ! -path "./upload/*" ! -path "./.git/*" -type d -name '*'`
echo $list > list.txt
for i in $list; do
   nonempty=`ls $i`;
   echo $nonempty > nonempty.txt
   if [ -z "$nonempty" ]; then
      echo "write to $i"
      #echo "" > $i/.gitkeep
   fi
done


Вот куда он собирается писать файлы
Код:
write to ./includes
write to ./local/templates/.default/lang/ru/page_templates
write to ./local/templates/.default/lang/en/page_templates
write to ./local/templates/beststroy/components/bitrix/catalog.section
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/lang/ru
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/lang/en
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.top/slider/lang/ru
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.top/slider/lang/en
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.compare.list
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.compare.result
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/forum.topic.reviews
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/forum.topic.reviews/.default/bitrix/rating.vote
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.search
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.search/.default/bitrix/search.page
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/iblock.vote/stars/lang/ru
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/iblock.vote/stars/lang/en
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.filter
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.element
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.link.list
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.link.list/.default/lang/ru
write to ./local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.link.list/.default/lang/en
write to ./local/templates/beststroy/components/bitrix/breadcrumb


Но надо не так. Например в папке ./local/ есть две папки templates и php_interface, но нет ни одного файла, вот сюда то и надо записать файлик
А вот в папке /local/templates/.default/lang/ru/page_templates есть файл .content.php, сюда наоборот не надо.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пн 12-12-16 : 16-17    Заголовок сообщения: Ответить с цитатой

Нажмите сюда, чтобы просмотреть текст

Код:
$ ls -Rla root_dir/
root_dir/:
итого 28
drwxr-xr-x  5 user user  4096 дек.  12 16:13 .
drwxr-xr-x 20 user user 12288 дек.  12 16:10 ..
drwxr-xr-x  2 user user  4096 дек.  12 16:10 empty-dir
drwxr-xr-x  2 user user  4096 дек.  12 16:10 nonempty-dir
drwxr-xr-x  3 user user  4096 дек.  12 16:13 subdir

root_dir/empty-dir:
итого 8
drwxr-xr-x 2 user user 4096 дек.  12 16:10 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..

root_dir/nonempty-dir:
итого 8
drwxr-xr-x 2 user user 4096 дек.  12 16:10 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..
-rw-r--r-- 1 user user    0 дек.  12 16:12 somefile

root_dir/subdir:
итого 12
drwxr-xr-x 3 user user 4096 дек.  12 16:13 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..
drwxr-xr-x 2 user user 4096 дек.  12 16:13 emptydir

root_dir/subdir/emptydir:
итого 8
drwxr-xr-x 2 user user 4096 дек.  12 16:13 .
drwxr-xr-x 3 user user 4096 дек.  12 16:13 ..

$ ./test.sh root_dir

$ ls -Rla root_dir/
root_dir/:
итого 28
drwxr-xr-x  5 user user  4096 дек.  12 16:13 .
drwxr-xr-x 20 user user 12288 дек.  12 16:10 ..
drwxr-xr-x  2 user user  4096 дек.  12 16:14 empty-dir
drwxr-xr-x  2 user user  4096 дек.  12 16:10 nonempty-dir
drwxr-xr-x  3 user user  4096 дек.  12 16:13 subdir

root_dir/empty-dir:
итого 12
drwxr-xr-x 2 user user 4096 дек.  12 16:14 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..
-rw-r--r-- 1 user user    1 дек.  12 16:14 .gitkeep

root_dir/nonempty-dir:
итого 8
drwxr-xr-x 2 user user 4096 дек.  12 16:10 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..
-rw-r--r-- 1 user user    0 дек.  12 16:12 somefile

root_dir/subdir:
итого 12
drwxr-xr-x 3 user user 4096 дек.  12 16:13 .
drwxr-xr-x 5 user user 4096 дек.  12 16:13 ..
drwxr-xr-x 2 user user 4096 дек.  12 16:14 emptydir

root_dir/subdir/emptydir:
итого 12
drwxr-xr-x 2 user user 4096 дек.  12 16:14 .
drwxr-xr-x 3 user user 4096 дек.  12 16:13 ..
-rw-r--r-- 1 user user    1 дек.  12 16:14 .gitkeep
Romani писал(а):
нет ни одного файла
Значит, в дочерних есть. git по самой младшей папке будет смотреть.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Romani
Гуру
Предупреждений : 1
СообщениеДобавлено: Пн 12-12-16 : 16-23    Заголовок сообщения: Ответить с цитатой

Странно, а почему у меня git не видит изменения файла?
/beststroy.rf/public_html/local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.section/.default/template.php
В gitignore его и его родителей нет 100%.
Может какую-то настройку не сделал? Что может быть?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Romani
Гуру
Предупреждений : 1
СообщениеДобавлено: Пн 12-12-16 : 16-32    Заголовок сообщения: Ответить с цитатой

Добавлю, что это гит на таймвебе
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пн 12-12-16 : 16-36    Заголовок сообщения: Ответить с цитатой

Попробуй
Код:
git add /beststroy.rf/public_html/local/templates/beststroy/components/bitrix/catalog/podryad/bitrix/catalog.section/.default/template.php
git status

Что говорит?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Romani
Гуру
Предупреждений : 1
СообщениеДобавлено: Пн 12-12-16 : 16-49    Заголовок сообщения: Ответить с цитатой

Ахренеть я протупил, в gitignore поставил просто папку bitrix без путей, надо было ./bitrix игнорировать, а он игнорировал все папки bitrix, спасибо большое за помощь и скриптик тоже пригодится. Respect
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Luke_Skywalker
Гуру
СообщениеДобавлено: Ср 14-12-16 : 03-19    Заголовок сообщения: Ответить с цитатой

а зачем вам папки пустые в гите?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)*NIX OS Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы