2014-01-30 45 views
0

在我的項目中,我需要一個使用composer的軟件包。今天早上我學會了一夜之間有一個合併的pull-request,但是在一個破壞它的代碼類中留下了一個糟糕的功能。有人修復了這個錯誤並提交了一個提交,但它尚未合併到master分支。作曲家需要特定的git commit沒有合併到分支

所以我更新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

這不會按照[文檔](https://getcomposer.org/doc/04-schema.md#package-links) –

回答

1

我猜(你真的不知道)你不能包含這個提交不在的分支提交。如果該提交沒有合併到master,那麼它不能被包含在散列中,同時指定你想要「dev-master」。

您應該指定修復所在的其他分支。如果該分支尚未移入Packagist/Composer已知的存儲庫,則可能還需要包含實際提交者的其他存儲庫,以便Composer能夠找到該分支並提交。

另一方面:爲什麼要打擾不穩定的主分支?你有沒有考慮要求一個穩定的標籤版本呢?生活要容易得多(我知道由於我不明白的原因,一些信息庫管理員避免使用標籤版本,這樣每個人的生活都會變得更加悲慘,但是希望它能夠滿足用戶的使用需求)。

+0

工作。其實你說的話是有道理的,我應該考慮嘗試。無論哪種方式最終它被推動,一切都很好,但它仍然是一個有趣的問題。但是,在大多數情況下,我會完全同意你的看法,只需要一個穩定的標籤發佈。 –

0

下面的示例使用一個到位桶的例子,但你可以很容易地做同樣的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" 
    } 
}