Как использовать git с Symfony 2?

Я установил Symfony 2 с Composer (следуя основным руководствам), и он создал этот файл .git/config:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/symfony/symfony-standard
    pushurl = [email protected]:symfony/symfony-standard.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "composer"]
    url = git://github.com/symfony/symfony-standard
    fetch = +refs/heads/*:refs/remotes/composer/*

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

Итак, как мне добавить свой собственный репозиторий для «myapp» и зафиксировать/отправить в него? Я обычно делаю 'git remote add origin...' и работаю только с ним, но теперь в файле два репозитория плюс тот, который мне нужно добавить.

ОБНОВЛЕНИЕ

Я установил Symfony2 с помощью этой команды:

$ php composer.phar create-project symfony/framework-standard-edition myapp

Это создало myapp/ и установило зависимости Symfony2 +. Но теперь composer.json не выглядит готовым к использованию в моем проекте, похоже, мой проект — это сам Symfony2 (я так думаю):

{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
    "psr-0": { "": "src/" }
    },
    "require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.1.*",
    "doctrine/orm": "2.2.*",
    "doctrine/doctrine-bundle": "dev-master",
    "twig/extensions": "dev-master",
    "symfony/assetic-bundle": "dev-master",
    "symfony/swiftmailer-bundle": "dev-master",
    "symfony/monolog-bundle": "dev-master",
    "sensio/distribution-bundle": "dev-master",
    "sensio/framework-extra-bundle": "dev-master",
    "sensio/generator-bundle": "dev-master",
    "jms/security-extra-bundle": "1.1.*",
    "jms/di-extra-bundle": "1.0.*"
    },
    "scripts": {
    "post-install-cmd": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ],
    "post-update-cmd": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ]
    },
    "config": {
    "bin-dir": "bin"
    },
    "minimum-stability": "dev",
    "extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web"
    }
}

Основные руководства


person ChocoDeveloper    schedule 19.07.2012    source источник
comment
Обычно вы делаете это в файле composer.js. Этот файл указывает, что нужно вашему коду. Зафиксируйте composer.js со своим кодом.   -  person hakre    schedule 19.07.2012
comment
@hakre Я не пытаюсь добавлять зависимости в свой код, я пытаюсь изменить версию своего кода.   -  person ChocoDeveloper    schedule 19.07.2012
comment
Пожалуйста, дайте ссылку на эти основные руководства, возможно, тогда я лучше пойму, что вас беспокоит, потому что обычно вы просто используете git;) (как и вы)   -  person hakre    schedule 19.07.2012
comment
Вы можете удалить папку .git в корневом каталоге и снова выполнить git init.   -  person Mun Mun Das    schedule 20.07.2012
comment
@ m2mdas Вы уверены? Не испортит ли это настройки композитора? Что, если мне нужно обновить symfony или вендоров? Почему .git dir вообще существует? Почему композитор добавил это, если мне нужны только библиотеки, а не вся их история? Что мне делать с composer.json? Мой проект не сам Symfony, Symfony должен быть просто еще одной зависимостью   -  person ChocoDeveloper    schedule 20.07.2012
comment
Команда AFIK composer.phar create-project клонирует проект, считывает зависимость из файла composer.json, клонирует их и помещает в каталог поставщика и соответственно генерирует autoload.php И удаляет папку .git в корневом каталоге. Так что, если вы будете следовать документу рабочего процесса git, это не будет большой проблемой. Как вы видели в документе, папка поставщика указана в файле .gitignore. Поэтому, если вы создадите новый голый репозиторий после удаления папки .git, git не будет смотреть на папку поставщика. Вы можете просто ввести php composer.phar update для обновления библиотек. Он также портативный.   -  person Mun Mun Das    schedule 20.07.2012
comment
@ m2mdas Хорошо, я попробую. Спасибо   -  person ChocoDeveloper    schedule 20.07.2012


Ответы (1)


Вы можете безопасно удалить папку .git и запустить git init, чтобы инициализировать собственное хранилище, как предлагает @m2mdas.

Композитор здесь ничего особенного не делает. Он просто клонирует проект symfony-standard, а затем устанавливает его зависимости.

Composer клонирует репозиторий, но для работы ему не нужна папка .git. На самом деле я не думаю, что по умолчанию нужно клонировать проекты. Возможно, они исправят это в будущих версиях.

Composer использует файл composer.json, и вы должны управлять всеми своими зависимостями с помощью этого файла. Вы можете безопасно отредактировать его, чтобы добавить или удалить пакеты.

Затем для обновления пакетов просто запустите:

php composer.phar update

Все пакеты, удаленные из composer.json, будут удалены, добавленные вами будут установлены. Существующие пакеты будут обновлены до последней версии.

Вы должны сохранить сгенерированный файл composer.lock в своем репозитории, чтобы всегда получать одни и те же версии зависимостей при запуске:

php composer.phar install

composer.lock обновляется при первом запуске установки и при каждой команде обновления.

person Jakub Zalas    schedule 19.07.2012
comment
Если вы создаете репозиторий для проекта symfony, как восстановить его в другом каталоге? - person Aysennoussi; 23.06.2014