За последние 24 часа нас посетили 16996 программистов и 1635 роботов. Сейчас ищут 597 программистов ...

composer и github

Тема в разделе "Версионность, тестирование и развёртывание", создана пользователем vikrorpert, 2 фев 2015.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    на гитхабе есть репозиторий без описания composer.json
    я его подключил так

    Код (PHP):
    1. "require": {
    2.         "terrasoff/yii-flag-behavior":"dev-master",
    3.     },
    4. "repositories":[
    5.         
    6.         {
    7.             "type":"package",
    8.             "package":{
    9.                 "name":"terrasoff/yii-flag-behavior",
    10.                 "version": "dev-master",
    11.                 "source": {
    12.                     "type": "git",
    13.                     "reference": "master",
    14.                     "url":"https://github.com/terrasoff/yii-flag-behavior"
    15.                 },
    16.                 "autoload": {
    17.                     "classmap":["FlagBehavior.php"]
    18.                 }
    19.             }
    20.         },
    21.  
    22.  
    проблема в том что при изменении репы композер не обновляет пакет
    как правильно подключить?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    а как ты обновляешь?
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    composer update
    пробовал composer install- вобще ничего не обновляет
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
  5. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    по ссылке репа не находится
    но подозреваю что в репе есть свой файл composer.json поэтому нет описания
    в моем примере в репе нету файла composer.json
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    ты буквально строки из примера взял чтоли? ну конечно репа не находится. это же пример.
    смотри тип репозитория. у тебя "type":"package", в примере "type": "vcs".

    далее по тексту сказано:
     
  7. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    мой пример я взял отсюда http://habrahabr.ru/post/145946/ Подключаем произвольный git репозиторий
    "type":"package" а внутри
    Код (PHP):
    1. "source": {
    2.                     "type": "git",
    3.                     "reference": "master",
    4.                     "url":"https://github.com/terrasoff/yii-flag-behavior"
    5.                 }, 
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    да, я был невнимателен.

    Добавлено спустя 6 минут 30 секунд:
    Вот товарищь сигналит ту же проблему с НЕобновлением из git и решением отметил следующую рекомендацию: http://stackoverflow.com/a/14600363/272885
    либо отмечать каждую новую версию в гите тегом, либо таки придется заводить composer.json в подключаемой репе.
     
  9. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    про composer.json в подключаемой репе я догадывался но тут не вариант
    получается нужно удалять руками пакет чтобы композер заново его скачал?

    думал что если указать dev-master то композер будет хранить ид последнего скаченного коммита fdf8db9cdb789981937811d154b5cf31951e5b4e и при обновлении записывать
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    проще говоря, компосер не заменяет клиента гит ))) для его полноценной работы таки нужен composer.json в подключаемом репозитории.
     
  11. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    строка version которая в репе в файле composer.json, которого нету?
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    не угадал.
     
  13. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    тогда что такое version
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    см. свой первый пост - там есть слово version.

    Добавлено спустя 2 минуты 12 секунд:
    p.s. я ищу решение параллельно с тобой, на экспертное мнение не претендую ))) читаю, экспериментирую

    Добавлено спустя 3 минуты 51 секунду:
    допустим вот человек пытался зажечь тикет по теме, но его успокоили, что такова природа вещей
    https://github.com/composer/composer/issues/2011
    в итоге просто сделали комментарий в доке
    [​IMG]
     
  15. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    "version": "dev-master" вместо dev-master вставить любое число?
    только что попробовал, если вручную менять число то обновления скачиваются, но ведь это тоже самое что удалить пакет и композер его заново скачает
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    ага.
     
  17. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Не хочу мусорить новой темой composer и github.

    Как правильно оформить composer.json для репозиторя github?

    У меня получилось инсталировать репозиторий без этого файла, composer.json в проекте имел вид:
    Код (PHP):
    1. {
    2.     "repositories":[
    3.         {
    4.             "type": "package",
    5.             "package": {
    6.                 "name": "Zlatov/pdo",
    7.                 "version": "1.0.0",
    8.                 "source": {
    9.                     "url": "https://github.com/Zlatov/pdo.git",
    10.                     "type": "git",
    11.                     "reference": "dev-master"
    12.                 },
    13.                 "autoload": {
    14.                     "classmap": ["PDOConnection.php"]
    15.                 }
    16.             }
    17.         }
    18.     ],
    19.     "require": {
    20.         "twig/twig": "1.16.3",
    21.         "Zlatov/pdo": "1.0.0"
    22.     }
    23. } 
    Теперь хочу, чтобы в проекте файл composer.json выглядел проще:

    Код (PHP):
    1. {
    2.     "repositories":[
    3.         {
    4.             "url": "https://github.com/Zlatov/pdo.git",
    5.             "type": "git"
    6.         }
    7.     ],
    8.     "require": {
    9.         "twig/twig": "1.16.3",
    10.         "Zlatov/pdo": "1.0.1"
    11.     }
    12. }
    13.  
    Для этого, как я понимаю, нужно в репе создать свой composer.json:

    Код (PHP):
    1. {
    2.     "type": "package",
    3.     "package": {
    4.         "name": "Zlatov/pdo",
    5.         "version": "1.0.1",
    6.         "source": {
    7.             "url": "https://github.com/Zlatov/pdo.git",
    8.             "type": "git",
    9.             "reference": "1.0.0"
    10.         },
    11.         "autoload": {
    12.             "classmap": ["PDOConnection.php"]
    13.         }
    14.     }
    15. } 
    Но в такой кофигурации у меня ошибка
    Код (PHP):
    1. Reading composer.json of https://github.com/Zlatov/pdo.git (dev-master)
    2. Skipped branch dev-master, Undefined index: name
    3.  
    4.   [Composer\Repository\InvalidRepositoryException]
    5.   No valid composer.json was found in any branch or tag of https://github.com/Zlatov/pdo.git, could not load a packag
    6.   e from it. 
    Почему name - Undefined index?
    Почему No valid composer.json was found in any branch or tag?

    Еще вопрос, почему принято ветку называть dev-master? Можно ли оставить master?
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в композере же вроже есть какой-то проверятель конфига, если я не ошибаюсь. Хотя я могу.
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а нет идеи что имя пропадает потому что оно содержит недопустимые символы - например верхний регистр?
     
  20. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    я не гуру, но своё понимание расскажу:

    composer init сделай, он интерактивно создаст валидный файл. в ветке master он должен быть.
    версии надо обозначать через теги в репозитории. имена по определенной схеме.
    "dev-master" это такой псевдоним для текущего состояния ветки master - независимо от тегов. буквально создавать ветку с этим именем не надо.
     
  21. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    В общем создал валидный composer.json в репе, и назрел вопрос.
    Код (PHP):
    1. {
    2.     "name": "Zlatov/pdo",
    3.     "type": "package",
    4.     "description": "pdo",
    5.     "keywords": ["pdo","connect"],
    6.     "homepage": "https://github.com/lastguest/DynamicString",
    7.     "version": "1.0.3",
    8.     "license": "MIT",
    9.     "authors": [
    10.         {
    11.             "name": "Maksim Zlatov",
    12.             "email": "zlatov@ya.ru"
    13.         }
    14.     ],
    15.     "require": {
    16.         "php": ">=5.4"
    17.     },
    18.     "minimum-stability": "dev-master",
    19.     "autoload": {
    20.         "classmap": [ "PDOConnection.php" ]
    21.     }
    22. } 
    Если при установке запросить версию dev-master то комозер посылает ошибкой, а если указать версию, например 1,0,3 то удачно скачивает.
    А если указать любую версию: "Zlatov/pdo": "*" , то скачивает последнюю версию 1,0,3 , а не dev-master, хотя указано в репозитории "minimum-stability": "dev-master"

    Что-то я не так понимаю....

    Добавлено спустя 23 минуты 8 секунд:
    Идеи небыло =) сам github везде пишет Zlatov/... и в ссылках тоже, но спасибо, символы помогли.

    composer init рулит ага, спасибо
    с тагами интересно все, теговал четыре раза (1.0.0, 1.0.1, 1.0.2, 1.0.3) и пушил. Но гитхаб видит только два релиза 1.0.1 и 1.0.3, но это мой косяк где-то....
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, точно. имя должно быть с маленькой
     
  23. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    https://getcomposer.org/doc/04-schema.md#minimum-stability
    dev-master можно упоминать в секции require: ты хочешь подключить пакет foo/bar в версии dev-master.

    еще нюанс: если через packagist забираешь свой пакет (а не напрямую с гита), то там обновления где-то раз в час происходят. а если хук на гитхабе не настроить, то вообще хз когда раздуплится. оно может тупо не знать про твою текущую версию.

    Добавлено спустя 2 минуты 22 секунды:
    с заглавной буквой какие-то сложности: https://github.com/composer/packagist/issues/422

    Добавлено спустя 7 минут 38 секунд:
    Хм, при типа пакета "vcs" есть какие-то особые требования к dev-master. Похоже требуется описать алиас:
    https://getcomposer.org/doc/articles/aliases.md

    Код (PHP):
    1. {
    2.     "extra": {
    3.         "branch-alias": {
    4.             "dev-master": "1.0.x-dev"
    5.         }
    6.     }
    7. }
    8.  
     
  24. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да, вот тут у них непонятка вышла. если они в вопросе о регистрах решили что дабы не держать никакого сервера имен (который разрешал бы ИмЯаВторА в имяавтора) тупо сделать всё в нижнем регистре. и это правильно. днс так же работает. электропочта так же работает. но вот не научить программу тупо переводить в нижний регистр символы, полученных из описания пакета - это пролёт.