2012-06-29 2 views
1

Существует A проект и проект имеет подмодуль S

| -S
| -B
| -СКак нажимать раздвоенный репозиторий, который имеет подмодуль?

A repo: [email protected]:benjamin/A.git
S repo: [email protected]:owner/S.git

Чтобы внести свой вклад некоторые исправления ошибок, я раздвоенный на A хранилище и клонировали его.

$ git clone [email protected]:benjamin/A.git

, а затем, чтобы скачать submodule S Я заповедал

$ git submodule init
$ git submodule update

Хорошо, дерево кода сделаны хорошо, и я исправлена ​​ошибка в файле в A и а файл в S.
Для фиксации и раздвинуть два файла,

$ cd S 
$ git add modified_file 
$ git commit -a -m 'submodule commit' 
$ git push 

Но толчок не работает.

ERROR: Permission to owner/S.git denied to benjamin.
fatal: The remote end hung up unexpectedly

Должен ли я также fork S репозиторий либо? Как вы это делаете в этом случае?

ответ

2

Да, подмодуль является git repo сам по себе.
Вы должны

  • вилки как репо,
  • клон их обоих,
  • сделать символическую ссылку между A и S локально (только для вашего кода для компиляции, то есть не беспокоиться о состоянии субмодуля из S локально)
  • совершать как в локальной репо ваших изменений и подтолкнуть их к вашим соответствующим вилкам
  • сделать два подтягивание запросов (один для A, один для S)

только сопровождающий A и S сможет:

  • применить запрос тянуть в S и совершить
  • применить запрос тянущего в A
  • совершить в A, запись нового SHA1 S (подмодуль) и изменений в A.

Mark Longair упоминает, что вы можете:

  • клон ваша вилка A
  • git submodule init
  • git submodule update (который будет клонировать S к правой SHA1, но с 'S', как удаленный, не «forked-S»)
  • cd S
  • git remote set-url origin <SSH-url-of-fork-of-S>
  • git checkout -b my-changes-to-S: сделать ветку, чтобы записать ваши локальные изменения, и, чтобы избежать в detached HEAD mode.
+0

Нет необходимости в символической ссылке, конечно? Он может просто «cd S» и «git remote set-url origin » и 'git checkout -b my-changes-to-S' –

+0

@MarkLongair Я полагаю, после 'git subodule init/update'? Я включил ваше предложение в ответ. – VonC