Правильный файл .gitignore для проекта Neos Flow?

Недавно я создал новый проект, используя composer create-project --keep-vcs neos/flow-base-distribution ProjectName, и меня немного смущает создаваемый им файл .gitignore:

/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat

По сути, он выбрасывает почти все файлы из системы контроля версий, включая всю папку Packages/Application, куда, как я предполагал, поместится большая часть моего кода. Так что дает? Почему файл .gitignore такой широкий?


person Synn Ko    schedule 28.11.2019    source источник


Ответы (3)


У меня нет предыдущего опыта работы с neos-flow, но я установил его с помощью композитора на два разных компьютера с ОС Ubuntu. Мой вывод файла .gitignore такой же, как ваш вывод оба раза.

/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat

Первоначальная структура моего проекта

.  ..  .editorconfig  .git  .github  .gitignore  Build  Configuration  Data  Packages  Readme.rst  Web  bin  composer.json  composer.lock  flow  flow.bat

Когда я удаляю все папки и файлы, как указано в .gitignore, структура моего проекта выглядит так:

.  ..  .editorconfig  .git  .github  .gitignore   composer.json  composer.lock

Как вы знаете, файл .gitignore предназначен для того, чтобы позволить вам игнорировать файлы, такие как файлы резервных копий редактора, продукты сборки или переопределения локальной конфигурации, которые вы никогда не хотите помещать в репозиторий.
Я думаю, что neos-flow просто нужны те файлы, которые остались после применения .gitignore. Это composer.json и composer.lock
composer.json предназначен для отображения сведений о проекте, таких как название, описание, информация о лицензии.< br> И composer.lock показывает все пакеты и зависимости для проекта, их имя, подробности и URL-адрес для загрузки пакета.

Содержимое composer.json

{
    "name": "neos/flow-base-distribution",
    "description": "Flow Base Distribution",
    "license": "MIT",
    "support": {
        "email": "[email protected]",
        "slack": "http://slack.neos.io/",
        "forum": "https://discuss.neos.io/",
        "wiki": "https://discuss.neos.io/c/the-neos-project/project-documentation",
        "issues": "https://github.com/neos/flow-development-collection/issues",
        "docs": "https://flowframework.readthedocs.io/",
        "source": "https://github.com/neos/flow-base-distribution"
    },
    "config": {
        "vendor-dir": "Packages/Libraries",
        "bin-dir": "bin"
    },
    "require": {
        "neos/flow": "~6.0.0",
        "neos/welcome": "~6.0.0"
    },
    "require-dev": {
        "neos/kickstarter": "~6.0.0",
        "neos/buildessentials": "~6.0.0",
        "neos/behat": "dev-master",
        "phpunit/phpunit": "~8.1",
        "mikey179/vfsstream": "~1.6"
    },
    "repositories": {
        "distributionPackages": {
            "type": "path",
            "url": "./DistributionPackages/*"
        }
    },
    "replace": {
        "typo3/flow-base-distribution": "self.version"
    },
    "suggest": {
        "ext-pdo_sqlite": "For running functional tests out-of-the-box this is required"
    },
    "scripts": {
        "post-update-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
        "post-install-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
        "post-package-update": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall",
        "post-package-install": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall"
    }
}

Первые 70 строк composer.lock

{
    "_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
        "This file is @generated automatically"
    ],
    "content-hash": "06d49a77babbafa5a03d726865e61dc3",
    "packages": [
        {
            "name": "composer/ca-bundle",
            "version": "1.2.4",
            "source": {
                "type": "git",
                "url": "https://github.com/composer/ca-bundle.git",
                "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
                "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
                "shasum": ""
            },
            "require": {
                "ext-openssl": "*",
                "ext-pcre": "*",
                "php": "^5.3.2 || ^7.0 || ^8.0"
            },
            "require-dev": {
                "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
                "psr/log": "^1.0",
                "symfony/process": "^2.5 || ^3.0 || ^4.0"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "1.x-dev"
                }
            },
            "autoload": {
                "psr-4": {
                    "Composer\\CaBundle\\": "src"
                }
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Jordi Boggiano",
                    "email": "[email protected]",
                    "homepage": "http://seld.be"
                }
            ],
            "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
            "keywords": [
                "cabundle",
                "cacert",
                "certificate",
                "ssl",
                "tls"
            ],
            "time": "2019-08-30T08:44:50+00:00"
        }]}

Ключ _readme в composer.lock json показывает назначение composer.lock

"_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
        "This file is @generated automatically"
    ],

Короче говоря, ваш .gitignore абсолютно точен и точен. Я также устанавливаю его на оба своих компьютера с Ubuntu, и оба они одинаковы.

person Ahwar    schedule 02.12.2019

В их репозитории есть две модели .gitignore:


https://github.com/neos/flow/blob/master/Resources/Private/Installer/Distribution/Defaults/.gitignore

/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat

https://github.com/neos/flow-development-distribution/blob/master/.gitignore

/Build/Behat/*
/Build/BuildEssentials
/Build/Reports
/Build/Resources
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.txt
/Upgrading.txt
/Readme.rst
/Upgrading.rst
/flow
/flow.bat
person Augusto Carmo    schedule 02.12.2019

Поскольку я активный пользователь Flow, я могу объяснить, почему каталог Packages/ исключен:

Как видите, в composer.json есть такой раздел:

    "repositories": {
        "distributionPackages": {
            "type": "path",
            "url": "./DistributionPackages/*"
        }
    },

Это говорит композитору искать ваши собственные пакеты в каталоге DistributionPackages/. Это намного чище, чем смешивание собственных пакетов и зависимостей в каталоге Packages/, а также немного помогает с самим управлением зависимостями (поскольку только composer.json в вашем каталоге пакетов должен содержать зависимости пакетов, т.е. нет необходимости дублировать их в корневом каталоге composer.json) . См. https://docs.neos.io/cms/manual/dependency-management#the-path-repository-setup и https://www.neos.io/blog/project-repository-best-practice.html для получения дополнительной информации об этом (это относится не только к пакетам сайта Neos, но и к каждому конкретному пакету проекта).

Что касается других исключенных файлов: поскольку они создаются composer install, их не нужно отслеживать с помощью git.

Исключение: вы часто хотите включить каталог Web/ (но исключить неспецифическое содержимое, такое как Web/_Resources/ или Web/index.php), т. е. для фавиконов или других статических файлов, необходимых в корневом каталоге веб-сайта.

person ComiR    schedule 18.05.2020