2014-01-30 2 views
0

В моем проекте мне нужен пакет с использованием composer. Сегодня утром я узнал, что в одночасье был сложенный запрос на вытягивание, однако в классе кода, который его нарушает, осталась плохая функция. Кто-то исправил ошибку и совершил коммит, но он еще не был объединен с веткой master.композитору требуется конкретная фиксация git, которая не была объединена с веткой

Так я обновляю composer.json и установить sha1 так:

"require": { 
    "vendor/package": "dev-master#d0d6b33897e1739c55a338fdd0a544bfe5a10721" 
} 

и запустить composer update и получить

d0d6b33897e1739c55a338fdd0a544bfe5a10721 is gone (history was rewritten?), recovered by checking out 33e68f9cec94d52f40192c576d7441ea12852b99 

Это то, что я хочу сделать это возможно на коммит, который не был слит ? Простите мое невежество, если это глупо - относительно новое для композитора. Я мог бы просто вручную удалить код, пока он не будет нажат, но я прошу в основном из любопытства.

+0

Вы пробовали просто указать коммит SHA, а не также название филиала? –

+0

Это не будет работать в соответствии с [docs] (https://getcomposer.org/doc/04-schema.md#package-links) –

ответ

1

Я предполагаю (без ведома), что вы не можете включить фиксацию из ветки, в которой это сообщение не включено. Если эта фиксация не объединена с мастером, она не может быть включена в ее хэш, в то же время указывая, что вы хотите «dev-master».

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

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

+0

Фактически, что вы говорите, имеет смысл, я должен был подумать, чтобы попробовать это. В любом случае, в конце концов, это было толкнуто, и все снова хорошо, но тем не менее это был интересный вопрос. Но да, в большинстве ситуаций я бы полностью согласился с вами, просто потребовал стабильный релиз с тегами. –

0

В приведенном ниже примере используется пример Bitbucket, но вы можете легко сделать то же самое с GitHub

{ 
    "name": "YOUR_VENDOR_NAME/YOUR_PROJECT_NAME", 
    "description": "PPROJECT DESCRIPTION", 
    "type": "project", 
    "license": "proprietary", 
    "authors": [{ 
     "name": "YOUR_NAME", 
     "email": "YOUR_EMAIL" 
    }], 
    "minimum-stability": "stable", 
    "repositories": [{ 
     "type": "package", 
     "package": { 
     "name": "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME", 
     "version": "0.0.1", 
     "type": "library", 
     "source": { 
      "type": "git", 
      "url": "[email protected]:BITBUCKET_USERNAME/REPOSITORY_SLUG.git", 
      "reference": "COMMIT_HASH" 
     } 
     } 
    }], 
    "require": { 
     "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME": "0.0.1" 
    } 
} 
Смежные вопросы