update-dts-subtree.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-2.0+
  3. #
  4. # Copyright 2024 Linaro Ltd.
  5. #
  6. # Usage: from the top level U-Boot source tree, run:
  7. # $ ./dts/update-dts-subtree.sh pull <release-tag>
  8. # $ ./dts/update-dts-subtree.sh pick <commit-id>
  9. #
  10. # The script will pull changes from devicetree-rebasing repo into U-Boot
  11. # as a subtree located as <U-Boot>/dts/upstream sub-directory. It will
  12. # automatically create a squash/merge commit listing the commits imported.
  13. set -e
  14. merge_commit_msg=$(cat << EOF
  15. Subtree merge tag '$2' of devicetree-rebasing repo [1] into dts/upstream
  16. [1] https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git/
  17. EOF
  18. )
  19. remote_add_and_fetch() {
  20. if ! git remote get-url devicetree-rebasing 2>/dev/null
  21. then
  22. echo "Warning: Script automatically adds new git remote via:"
  23. echo " git remote add devicetree-rebasing \\"
  24. echo " https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git"
  25. git remote add devicetree-rebasing \
  26. https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git
  27. fi
  28. git fetch devicetree-rebasing master
  29. }
  30. if [ "$1" = "pull" ]
  31. then
  32. remote_add_and_fetch
  33. git subtree pull --prefix dts/upstream devicetree-rebasing \
  34. "$2" --squash -m "${merge_commit_msg}"
  35. elif [ "$1" = "pick" ]
  36. then
  37. remote_add_and_fetch
  38. git cherry-pick -x --strategy=subtree -Xsubtree=dts/upstream/ "$2"
  39. else
  40. echo "usage: $0 <op> <ref>"
  41. echo " <op> pull or pick"
  42. echo " <ref> release tag [pull] or commit id [pick]"
  43. fi