Daqster

Upstream Management Guide

Родител: Operations Topics Documentation Index

Този документ описва как да управлявате upstream tracking за external библиотеките в Daqster проекта.

External Libraries

NodeEditor

QtRest

Fork Delta (спрямо upstream)

Този раздел описва целевите промени във fork-овете, които са специфични за Daqster.

NodeEditor: какво е променено и защо

QtRest: какво е променено и защо

Как да провериш текущата разлика спрямо upstream

Използвай тези команди вместо статични числа в документацията:

# NodeEditor
cd src/external_libs/nodeeditor
git fetch upstream
git rev-list --left-right --count HEAD...upstream/master

# QtRest
cd src/external_libs/qtrest_lib/qtrest
git fetch upstream
git rev-list --left-right --count HEAD...upstream/master

Upstream Management Script

Използвайте tools/build_helpers/manage_upstream.sh скрипта за лесно управление на upstream updates:

Основни команди:

# Покажи текущото състояние
./tools/build_helpers/manage_upstream.sh status

# Провери за нови промени
./tools/build_helpers/manage_upstream.sh check

# Изтегли последните промени от upstream
./tools/build_helpers/manage_upstream.sh fetch

# Слей промени от upstream
./tools/build_helpers/manage_upstream.sh merge nodeeditor
./tools/build_helpers/manage_upstream.sh merge qtrest
./tools/build_helpers/manage_upstream.sh merge all

# Cherry-pick конкретен commit
./tools/build_helpers/manage_upstream.sh cherry-pick <commit-hash>

Workflow за Upstream Updates

1. Редовна проверка (месечно):

# Провери за нови промени
./tools/build_helpers/manage_upstream.sh check

# Ако има нови промени, изтегли ги
./tools/build_helpers/manage_upstream.sh fetch

2. Анализ на промените:

# Виж детайлно какво е ново в NodeEditor
cd src/external_libs/nodeeditor
git log HEAD..upstream/master --oneline -10
git diff HEAD..upstream/master --stat

# Виж детайлно какво е ново в QtRest
cd src/external_libs/qtrest_lib/qtrest
git log HEAD..upstream/master --oneline -10
git diff HEAD..upstream/master --stat

3. Избор на стратегия за update:

A. Пълен merge (за QtRest):

# QtRest е по-малко модифициран, може да се merge-не директно
./tools/build_helpers/manage_upstream.sh merge qtrest

B. Cherry-pick (за NodeEditor):

# NodeEditor има много custom модификации
# Cherry-pick само нужните commits
./tools/build_helpers/manage_upstream.sh cherry-pick <commit-hash>

C. Създаване на integration branch:

# За големи updates, създай отделен branch
cd src/external_libs/nodeeditor
git checkout -b integration-upstream-$(date +%Y%m%d)
git merge upstream/master
# Разреши конфликтите и тествай

Важни съображения

NodeEditor специфики:

QtRest специфики:

Ръчни операции

Добавяне на upstream remote:

# NodeEditor
cd src/external_libs/nodeeditor
git remote add upstream https://github.com/paceholder/nodeeditor.git

# QtRest
cd src/external_libs/qtrest_lib/qtrest
git remote add upstream https://github.com/kafeg/qtrest.git

Fetch upstream changes:

git fetch upstream

Cherry-pick specific commit:

git cherry-pick <commit-hash>

Merge upstream changes:

git merge upstream/master

Monitoring и Alerts

GitHub Notifications:

Automated Checks:

# Добавете в cron за месечна проверка
0 0 1 * * /path/to/Daqster/tools/build_helpers/manage_upstream.sh check

Troubleshooting

Merge conflicts:

# Виж конфликтите
git status
git diff

# Разреши конфликтите ръчно
# След това:
git add .
git commit

Cherry-pick conflicts:

# Отмени cherry-pick
git cherry-pick --abort

# Или разреши конфликтите
git add .
git cherry-pick --continue

Upstream remote not found:

# Провери remote-ите
git remote -v

# Добави upstream ако липсва
git remote add upstream <upstream-url>

Best Practices

  1. Редовни проверки - поне веднъж месечно
  2. Тестване - винаги тествайте след updates
  3. Backup - създавайте backup преди големи промени
  4. Документиране - записвайте какво сте cherry-pick-нали
  5. Security first - приоритизирайте security updates

Полезни линкове