По сути это продолжение статьи как сделать git fork из github в bitbucket, т.к. одно из другого крайне бессмысленно. Допустим, есть какая-то хорошая публичная библиотека на github, нов ней есть фатальный недостаток, который автор библитеки не хочет, не может и не будет исправлять. При этом архитектура библиотеки такова, что нельзя просто так взять и отнаследоваться и переопределить поведение. А делать правку в коде и хранить весь этот хардкод в основном репозитории не позволяет здравый смысл.
Итак, вы сделали форк библиотеки в свой репозиторий и внесли необходимые правки. как теперь заставить composer по командам install или update загружать библиотеку из вашего репозитория, а не из оригинального? Самый простой и наименее геморройный способ делается в два шага. Во-первых, нужно отредактировать compose.json в своём репозитории и заменить оригинальное значение поля name на своё. Например, было owner/origin-repo, стало my/forked-repo.
Во-вторых, отредактировать composer.json файл своего проекта и добавить свой репозиторий:
"repositories": [ { "type": "git", "url": "[email protected]:my/forked-repo.git" } ]
А в секции require заменить owner/origin-repo на my/forked-repo.
И ещё маленький штрих: если вы сообразили, что вносить правки в ветку master не самая хорошая идея и создали новую ветку для своих правок, например, forked, то и в composer.json своего проекта нужно указать, что изменения нужно стягивать именно из этой ветки, достаточно в качестве версии указать dev-forked.
Либо выполнить команду:
composer require username/reponame dev-master
Существуют и другие, более хардкорные способы это сделать, но рекомендовать я их не буду, т.к. они требуют больших усилий и имеют свои ограничения и недостатки.
Если вдруг вы получили ошибку на подобии этой:
[RuntimeException]
Failed to execute git clone --mirror "[email protected]:username/reponame.git" "/some/composer/path"
Cloning into bare repository '/some/composer/path/vcs/git-bitbucket.org-org:username-reponame.git'...
repository access denied. deployment key is not associated with the requested repository.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Это значит, что нужно добавить ssh-ключ в репозиторий, для этого нужно открыть страницу https://bitbucket.org/username/reponame/admin/access-keys/ и добавить ключ.