2015-02-10 4 views
0

Я пытаюсь создать cronjob для резервного копирования всей моей конфигурации Jenkins в git. Единственное, что мне нужно отслеживать в моем репозитории, - это config.xml в каждом проекте Jenkins. Файловая система структурирована как ../jenkins/jobs/[PROJECTNAME]/config.xml. .git находится на рабочих местах..gitignore сохранить один файл

Я не хочу явно игнорировать все другие папки/файлы, но разрешать только config.xml в этом месте. Я придумал следующий рабочий раствор:

* 

!.gitignore 
!config.xml 
!*/ 

*/workspace 
*/modules 
/config-history 
*/config-history 
*/*/config-history 
*/*/*/config-history 
*/*/*/*/config-history 
*/*/*/*/*/config-history 
*/*/*/*/*/*/config-history 
*/*/*/*/*/*/*/config-history 

Неудачный есть много проектов и git add . занимает некоторое время. Игнорировать workspace, непосредственно с большинством файлов, не добавили никакой пользы.

КПП. интуитивный и короткий путь не работает вообще:

* 
!.gitignore 
!*/config.xml 

Любые идеи либо оптимизировать мой .gitignore или мой мерзавец добавить без перечисления всех файлов в любом случае?

ответ

2

Поскольку это всего лишь автоматическая задача, почему бы вам просто не добавить только файлы, которые вам нужны? Заменить

git add . 

с

git add config.xml 

и мерзавцем не придется пройти все дерево проекта.

Если вы хотите, чтобы показать статус вашего репо, без загрузки неотслеживаемых файлов, используйте

git status -uno 

EDIT: Конечно, вы должны находиться в директории с config.xml вы хотите добавить; если вы хотите, чтобы добавить все config.xml с в подкаталогах текущего каталога, используйте

git add */config.xml 
+0

Я быстро попробовал ваш подход на образце репо, но это не работает в подкаталогах? В любое время добавляются новые проекты, и, конечно же, я хочу создать резервную копию также нового файла config.xml. Имейте в виду, что конфигурации находятся в /[projectname]/config.xml относительно git. – mheinzerling

+0

'git add ' недвусмыслен. Единственная причина, по которой * вам нужен .gitignore, заключается в том, что вместо добавления файла, который вы хотите добавить, вы добавляете весь каталог, содержащий файл. Таким образом: вы все еще делаете «git add.»? Вы действительно не должны. –

+0

Я не понимаю. См. Мой пример: '> mkdir gittest > cd gittest \ gittest> git init. инициализирован пустой репозиторий Git в C: /Users/User/gittest/.git/ \ gittest> эхо "хх"> config.xml \ gittest> MkDir югу \ gittest> кд ​​суб \ gittest \ суб> эхо " xx2 "> config.xml \ gittest \ sub> echo" xx4 "> other.xml \ gittest \ sub> cd .. \ gittest> git add -n. add 'config.xml' add 'sub/config.xml' Добавить 'sub/other.xml ' \ gittest> git add -n config.xml add' config.xml'' (Скопируйте его, чтобы прочитать его :)) – mheinzerling

1

Ну, вы могли бы по крайней мере, сократить свой .gitignore с помощью двойной звездочки:

# other stuff here 
**/config-history 

Это будет соответствовать config-history на любом пути.

+0

Спасибо за внимание, но я помню, что у меня были проблемы с этим во время экспериментов. Но я повторю это снова. – mheinzerling