ExtJS 6 добавление workspace.json к gitignore

У меня есть быстрый вопрос ExtJS 6, в котором я надеюсь, что кто-то может мне помочь.

Я работаю в команде нескольких разработчиков, используя git для управления версиями.

Я разработал новый проект Ext, выполнив следующие шаги:

sencha -sdk /home/user/project/extjs-6.5.3.57 generate app Application /home/user/project/app

который создает приложение, я затем запускаю sencha app watch и делаю некоторые первоначальные изменения.

Оттуда я git init.

Кажется, все идет хорошо, он создает запись в моем файле workspace.json, например;

"frameworks": {
    "ext": {
        "path":"ext",
        "version":"6.5.3.57"
    }

},

Проблема возникает, когда другой член команды хочет начать разработку.

Они клонируют репо, настраивают sencha cmd и затем запускают;

sencha app upgrade /home/user/project/extjs-6.5.3.57

Это создает каталоги /build и /ext, которые находятся в файле.gitignore.

Прямо после этого, если они будут запускать git status, возвращается, говоря, что workspace.json обновлен.

Это изменение просто проверяет, что рамки блокируются и добавляются несколько пробелов. и это обработанный блок;

"frameworks": {
    "ext": {
        "path":"ext",
        "version":"6.5.3.57"
    }


},

Мне было интересно, если кто-то еще столкнется с этим и как они его преодолели? .. Должен ли я добавлять файл workspace.json в файл.gitignore, чтобы он был сгенерирован свежим на каждом dev-машине? или я делаю что-то неправильно изначально?

В настоящее время мой .gitignore выглядит так;

/build
/ext
bootstrap.*
classic.json*
modern.json*
.sencha
.idea

Я запускаю обновление приложения sencha из корневого каталога проекта, поэтому мой рабочий каталог выглядит так

/.git
.gitignore
Readme.md
/app
app.js
app.json
build.xml
/classic
/ext
index.html
/modern
/resources
workspace.json

Любая помощь будет принята с благодарностью.

Ответ 1

Во-первых, типичный файл gitignore ExtJS не включает workspace.json.
Поэтому вы не должны его игнорировать.

Во-вторых, вы можете попросить разработчиков активировать в своем git config clean content filter driver который удалит пустые строки.

git config filter.workspacejson.clean sed '/^$/d'

Этот фильтр " workspacejson " объявляется в репозитории Git как директива .gitattributes.

workspace.json  filter=workspacejson

Он будет применяться автоматически при git diff или git commit для любого файла workspace.json, как указано в файле .gitattributes.

http://git-scm.com/book/en/v2/book/08-customizing-git/images/clean.png

(Источник: Pro Git book: настройка атрибутов Git - Git)

Таким образом, любой git diff или git commit рассмотрит вашу workspace.json без изменений.