osmo-dev/src
arehbein 3c88d3e6cd src/grd: Add option for cherry-picking
Option '-c|--cherry-pick' will now cherry-pick into
the current branch if passed.

Change-Id: I85b1a2c4915e3da374e4b1201f2e977708fc7c4c
2023-07-10 08:51:13 +00:00
..
README src/grd: replace fetch-gerrit-patch.sh 2023-02-24 10:32:02 +01:00
gits gits: fix alias 're' of 'rebase' doing nothing 2023-01-28 21:51:25 +07:00
grd src/grd: Add option for cherry-picking 2023-07-10 08:51:13 +00:00
osmo-add-gerrit-hooks.sh src/osmo-add-gerrit-hooks.sh: use sccp -O 2023-04-12 02:07:16 +02:00

README

This dir is intended to keep all the git clones.

There are some handy scripts I use for my daily Osmocom development:

 osmo-add-gerrit-hooks.sh
	Look for git repositories in and below the current dir and install the
	gerrit commit-msg hook in each one. This requires an ~/.ssh/config
	entry, see top comment in the script.

 grd
	Pass a patch number seen on gerrit to fetch the latest patch set into
	your git clone. See top comment in the script.

 gits   Conveniently manage several git clones:
        - run a git or shell command in each source tree
	- show a brief branch and local mods status for each source tree
	- merge / rebase / fast-forward each source tree interactively
	See ./gits help

Examples:


-----------------------------------------------------------------------------

git clone ssh://go/osmo-msc

./osmo-add-gerrit-hooks.sh
+ cd /n/s/osmo/src/./osmo-msc/.git
+ [ ! -f hooks/commit-msg ]
+ scp go:hooks/commit-msg hooks/
commit-msg                                                             100% 4688     4.6KB/s   00:00    


-----------------------------------------------------------------------------


$ cd osmo-msc
$ ../grd 3787
Download https://gerrit.osmocom.org/changes/osmo-msc~3787/detail
+ git fetch https://gerrit.osmocom.org/osmo-msc refs/changes/87/3787/5
From https://gerrit.osmocom.org/osmo-msc
 * branch                refs/changes/87/3787/5 -> FETCH_HEAD
+ git checkout -B gerrit/3787_5 FETCH_HEAD
Switched to a new branch 'gerrit/3787_5'


# or if you want an earlier patch set
$ ../grd 3787 -r1
+ git fetch https://gerrit.osmocom.org/osmo-msc refs/changes/87/3787/1
From https://gerrit.osmocom.org/osmo-msc
 * branch                refs/changes/87/3787/1 -> FETCH_HEAD
+ git checkout -B gerrit/3787_1 FETCH_HEAD
Switched to a new branch 'gerrit/3787_1'

-----------------------------------------------------------------------------

./gits fetch    # run 'git fetch' in each clone = fetch all from upstream

===== libasn1c =====
remote: Counting objects: 29, done
remote: Finding sources: 100% (26/26)
remote: Total 26 (delta 8), reused 22 (delta 8)
Unpacking objects: 100% (26/26), done.
From ssh://go/libasn1c
   4151e59..aaae8c7  master     -> origin/master

===== libosmo-abis =====

===== libosmo-netif =====
remote: Counting objects: 105, done
remote: Finding sources: 100% (92/92)
remote: Total 92 (delta 54), reused 92 (delta 54)
Unpacking objects: 100% (92/92), done.
From ssh://go/libosmo-netif
   6032a35..e786055  master     -> origin/master
 + 058d3b7...89180ef pespin/jitterbuffer -> origin/pespin/jitterbuffer  (forced update)
 * [new branch]      pespin/osmux-lostpkt -> origin/pespin/osmux-lostpkt

===== libosmo-sccp =====

===== libosmocore =====
remote: Counting objects: 36, done
remote: Finding sources: 100% (24/24)
remote: Total 24 (delta 18), reused 24 (delta 18)
Unpacking objects: 100% (24/24), done.
From ssh://go/libosmocore
   4a29f34..733810c  master     -> origin/master

[...]

-----------------------------------------------------------------------------

./gits st    # any modifications / updates? (e.g. useful after './g fetch')
             # (checks only 'master' and the current checked-out branch)

     libasn1c master
 libosmo-abis master
libosmo-netif master
 libosmo-sccp MODS master[+1|-10]
  libosmocore master
    libsmpp34 master
     openggsn master
     osmo-bsc pre_release[+43|-43]
     osmo-hlr master
     osmo-iuh pre_release[+1]
     osmo-mgw pre_release
     osmo-msc pre_release
    osmo-sgsn pre_release

# This shows me that I have local mods in libosmo-sccp, while my local master
# branch has one commit that isn't on upstream ("+1"); but at the same time
# origin/master has moved on by 10 commits ("-10").
# My osmo-bsc git is on branch 'pre_release', and apparently I have amended the
# 44th commit before pre_release's HEAD.
# And on osmo-iuh, I have one un-pushed local commit.

-----------------------------------------------------------------------------

./gits sh rm .version  # in each source tree, remove the local .version file

-----------------------------------------------------------------------------

./gits rebase  # interactively try to fast-forward to upstream and/or save
               # local modifications.
               # If you just hit Enter all the time, nothing dangerous will happen.


libosmocore
master
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
Behind. git merge?  (empty = no, 'ok' = yes)
ok                   # <-- type 'ok' and hit enter
git merge
Updating ff932bb..4a29f34
Fast-forward
 include/osmocom/gprs/gprs_rlc.h | 25 +++++++++++++++++++
 include/osmocom/gsm/tlv.h       | 21 +++++++++++++++-
 src/gsm/gprs_rlc.c              | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/gsm/libosmogsm.map          |  6 +++++
 4 files changed, 141 insertions(+), 1 deletion(-)


libosmo-netif
master
Your branch is up-to-date with 'origin/master'.


libosmo-sccp
master
Your branch and 'origin/master' have diverged,
Diverged. git reset --hard origin/master ?  (empty = no, 'ok' = yes)
# a 'gitk' opens; just hit 'enter' to keep local diverged commits.
# If you type 'ok', local mods are saved to a wip branch first.

Local mods
  modified:   src/osmo_ss7_vty.c

commit to new branch? (enter name, empty = no)

commit to this branch master ?  (empty = no, 'ok' = yes)

[...]

-----------------------------------------------------------------------------


Enjoy,

~Neels
<nhofmeyr@sysmocom.de>