3

我最近使用创建了一个新项目composer create-project --keep-vcs neos/flow-base-distribution ProjectName,但它产生的 .gitignore 文件让我有点困惑:

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

它基本上会抛出 VCS 中的几乎所有文件,包括整个 Packages/Application 文件夹,我认为我的大部分代码都会放在那里。那么给了什么?为什么 .gitignore 文件如此广泛?

4

3 回答 3

1

我以前没有 neos-flow 方面的经验,但我在 composer 的帮助下将它安装在两台不同的 Ubuntu OS 计算机上。我的 .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
目的是它显示有关项目的详细信息,如名称、描述、许可证信息。composer.lock显示所有包和项目的依赖项,它们的名称、详细信息和用于下载包的 url 。

composer.json的内容

{
    "name": "neos/flow-base-distribution",
    "description": "Flow Base Distribution",
    "license": "MIT",
    "support": {
        "email": "hello@neos.io",
        "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"
    }
}

composer.lock的前 70 行

{
    "_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": "j.boggiano@seld.be",
                    "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"
        }]}

composer.lock json 中的 _readme 键显示了 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 计算机上,并且两者都是相同的。

于 2019-12-02T17:31:55.950 回答
1

他们的存储库下有两种模型.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
于 2019-12-02T17:41:39.480 回答
1

由于我是一个狂热的 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-setuphttps://www.neos.io/blog/project-repository-best-practice.html相关信息(这不仅适用于 Neos 站点包,还适用于每个项目特定的包)。

至于其他排除的文件:由于这些文件是由创建的composer install,因此不需要由 git 跟踪。

例外:您通常希望包含Web/目录(但排除非特定内容,如Web/_Resources/or Web/index.php),即用于 Web 根目录中所需的网站图标或其他静态文件。

于 2020-05-18T11:06:23.787 回答