BitBucket - добавить в ветку разработки напрямую вместо мастера

Мы находимся в процессе изменения нашего SCM на BitBucket. В настоящее время мы используем Clearcase SCM, и у нас есть код на разных этапах/потоках — Dev, UAT и production, где у dev есть код, над которым сейчас работают разработчики, UAT завершил изменения, тестируемые BP, а у Production есть код, который развертывается в продакшене. .

В BitBucket наши администраторы определили 3 ветки: development, test и master.

Для одного из наших приложений в CC у нас есть код в каждом из состояний, поэтому я пытался добавить код из потока разработки в ветку разработки в BitBucket.

Я использую совершенно новый созданный репо. Во всех ветках репозитория есть файл README.TXT.

Команды, которые я использую,

# 1.    create a Project & Repo in Bitbucket named __apprepo_
# 2.    create a Snapshot view on your workstation from Clearcase for the application that you want to migrate
# 3.    at the DOS command line, change directory to the root of your snapshot view
# 4.    type ‘git init’
# 5.    type ‘git add --all’
# 6.    type ‘git commit –m “Initial Commit” ‘
# 7.    type ‘git remote add origin ssh://ourBBserver.com:7999/EN/apprepo
# 8.    type ‘remote –v’
# 9.    type ‘git pull origin develop’
# 10.   type ‘git push –u origin develop’

Когда я запускаю # 9, я получаю следующую ошибку:

error   22-Jul-2016 20:45:10    warning: no common commits
error   22-Jul-2016 20:45:10    From ssh://ourBBserver.com:7999/EN/apprepo
error   22-Jul-2016 20:45:10     * branch            develop    -> FETCH_HEAD
error   22-Jul-2016 20:45:10     * [new branch]      develop    -> origin/develop
error   22-Jul-2016 20:45:10    error: src refspec develop does not match any.
error   22-Jul-2016 20:45:10    error: failed to push some refs to 'ssh://ourBBserver.com:7999/EN/apprepo.git'

Но для № 9 и № 10, если я изменю develop на master, это сработает.

что я могу сделать, чтобы переместить код напрямую в ветку develop? И то же самое с test веткой


person adbdkb    schedule 23.07.2016    source источник


Ответы (1)


Вам не нужно переключаться в представление ClearCase и инициализировать репозиторий там.

Держите локальный репозиторий Git отдельно, чтобы он был готов к удаленному репозиторию.

Каждый раз, когда вы хотите добавить когерентное состояние из ClearCase, оставайтесь в репозитории git и введите:

 git --work-tree=/path/to/ClearCase/view/aVob add .
 git commit -m "Add state from CC view"
 git push

Затем измените спецификацию конфигурации представления CC на его следующий базовый уровень (или полную метку), чтобы представить следующее согласованное состояние (поскольку ClearCase основан на файлах и не имеет понятия коммитов помимо базового плана UCM).
И снова добавьте новый контент того же представления в тот же локальный репозиторий Git (та же ветка). И снова нажимать.


Мой основной вопрос: если у меня есть набор файлов, которые я хочу добавить в ветку develop вместо ветки master, и я сделал «git init» -> «git add --all» -> «git commit –m «Initial Commit ' ' -> 'git remote add origin ssh://ourBBserver.com:7999/EN/apprepo',

Во-первых: не используйте git init. Если у вас есть основная ветка, это означает, что вы уже инициализировали репозиторий в другом месте.

Перейдите в этот репозиторий, создайте ветку разработки и добавьте контент, соответствующий набору представлений CC для этой ветки разработки CC.

cd /path/to/my/repo
git checkout -b develop
git --work-tree=/path/to/ClearCase/view/aVob add .
git commit -m "add content of CC develop branch (no history though)"
git push -u origin develop
person VonC    schedule 23.07.2016
comment
Спасибо, @VonC. Можете ли вы объяснить немного больше? Я хочу добавить весь набор файлов из каждого состояния CC в соответствующую ветку в BitBucket. Наш ClearCase настроен для разных состояний, существуют разные потоки, поэтому я планировал заполнить BitBucket таким образом, чтобы поток CC _dev -> ветка разработки, поток CC _uat -> ветка test и поток CC _prod -> master филиал. Все разные ветки имеют разные файлы в том смысле, что файлы могли быть добавлены из prod в uat и в dev. - person adbdkb; 23.07.2016
comment
@adbdkb для каждой ветки CC, вам нужно перебазировать от самой старой базовой версии к самой новой, и для каждой добавить ее содержимое в репозиторий Git. Параметр --work-tree позволяет репозиторию git временно рассматривать другой путь (например, путь обновленного представления CC) в качестве своего рабочего дерева, чтобы добавлять/изменять/удалять дельту между его HEAD и рабочим деревом CC. - person VonC; 23.07.2016
comment
Но как я могу напрямую добавить ветку разработки, используя git pull origin develop, или это невозможно? - person adbdkb; 23.07.2016
comment
@adbdkb — это команда из репозитория Git в репозиторий Git. Это не имеет ничего общего с импортом ветки CC в локальный репозиторий Git (который затем нужно будет отправить, а не вытащить в удаленный репозиторий Git). - person VonC; 23.07.2016
comment
@adbdkb Помните: вы переключаетесь с CC на Git: вы импортируете из CC в локальный репозиторий Git, а затем отправляете в BitBucket. - person VonC; 23.07.2016
comment
@adbdkb Читайте также stackoverflow.com/a/12411240/6309 и связанные с ним ссылки (в основном stackoverflow.com/a/645771/6309, чтобы полностью понять разницу между CC) - person VonC; 23.07.2016
comment
пожалуйста, простите мое невежество, все еще ковыляя в понимании git. Итак, как работает часть pull/push в приведенных выше командах? Думаю, я запутал вопрос, упомянув часть CC. Мой основной вопрос: если у меня есть набор файлов, которые я хочу добавить в ветку разработки вместо основной ветки, и я сделал ‘git init’ -> ‘git add --all’ -> ‘git commit –m “Initial Commit” ‘ -> ‘git remote add origin ssh://ourBBserver.com:7999/EN/apprepo' , какой должна быть моя следующая команда, чтобы я мог добавить в ветку develop? - person adbdkb; 23.07.2016
comment
Давайте продолжим обсуждение в чате. - person adbdkb; 23.07.2016
comment
Здесь 4 утра. я вернусь через несколько часов - person VonC; 23.07.2016
comment
не уверен, как работает часть чата @VonC. Не видел вашего ответа вчера в чате, поэтому добавляю комментарий. (я имел в виду, видел это здесь, а не в чате) Что мне нужно сделать, чтобы переместить код - разные наборы файлов - одна и та же общая база, но с добавлениями/удалениями между разными наборами - 1-й набор -> ветка разработки, вторая set -> тестовая ветка и 3-й set -> master ветка. Я до сих пор не в полной мере понимаю, как работает BitBucket, и все еще пытаюсь понять, - person adbdkb; 23.07.2016
comment
@adbdkb это не имеет ничего общего с BitBucket (или GitHub, или GitLab): все эти службы хостинга репо работают с Git одинаково. Это связано с тем, как работает ClearCase по сравнению с Git: ветка в ClearCase очень отличается от ветки в Git. - person VonC; 23.07.2016
comment
Спасибо. Я собираюсь снова попробовать чат и посмотреть, работает ли он. - person adbdkb; 23.07.2016