[Intel-gfx] [PATCH 04/10] dim: autodetect remotes, first part for dim_setup
Jani Nikula
jani.nikula at linux.intel.com
Tue Oct 18 14:05:27 UTC 2016
On Tue, 18 Oct 2016, Ville Syrjälä <ville.syrjala at linux.intel.com> wrote:
> On Tue, Oct 18, 2016 at 04:27:05PM +0300, Jani Nikula wrote:
>> On Tue, 18 Oct 2016, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>> > The goals here are multiple:
>> > - simpler configuration through autodetection
>> > - allows seamless upgrading to git worktree for the aux checkouts
>> > - eventually I want to split up drm-misc into a separate remote ...
>> >
>> > And yes this is just a start.
>> >
>> > v2: Print errors to stderr, otherwise they can't be seen when directly
>> > assigning the result of get_remote_name to a variable.
>> >
>> > Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
>> > ---
>> > dim | 112 +++++++++++++++++++++++++++++++++++---------------------------------
>> > 1 file changed, 58 insertions(+), 54 deletions(-)
>> >
>> > diff --git a/dim b/dim
>> > index 2601bb7dbbad..90eb553c6575 100755
>> > --- a/dim
>> > +++ b/dim
>> > @@ -192,6 +192,24 @@ if [[ "$((`date +%s` % 100))" -eq "0" ]] ; then
>> > dim_uptodate
>> > fi
>> >
>> > +function get_remote_name
>> > +{
>> > + local remote_url=$1
>> > +
>> > + local remote=`git remote -v | grep $remote_url | \
>> > + head -n1 | sed -e 's/^\(.*\)\t.*/\1/'`
>>
>> 'cut -f 1' seems cleaner than the sed.
>
> Or just replace the lot with awk?
Then I'd have to refresh my awk-fu, but awk is not trendy anymore...
J.
>
>>
>> > +
>> > + if [[ $remote == "" ]] ; then
>>
>> I'd prefer
>>
>> if [[ -z "$remote" ]]; then
>>
>> > + echoerr No git remote for $remote_url found in `pwd`.
>> > + echoerr Please set it up using
>> > + echoerr $ git remote add '<name>' $remote_url
>> > + echoerr with a name of your choice.
>>
>> I'm fond of wrapping the strings in double quotes. Gives me nicer
>> highlighting in the editor. ;)
>>
>> Otherwise seems nice.
>>
>> BR,
>> Jani.
>>
>> > + exit 1
>> > + fi
>> > +
>> > + echo $remote
>> > +}
>> > +
>> > # get message id from file
>> > # $1 = file
>> > message_get_id ()
>> > @@ -1044,8 +1062,36 @@ function dim_update_branches
>> > update_rerere_cache
>> > }
>> >
>> > +function setup_aux_checkout # name remote
>> > +{
>> > + local name=$1
>> > + local remote_url=$2
>> > + local dir=$3
>> > + local remote
>> > +
>> > + echo "Setting up $dir ..."
>> > +
>> > + if [ ! -d $dir ]; then
>> > + git clone --reference=$DIM_PREFIX/$DIM_DRM_INTEL/.git $remote_url $dir
>> > + cd $dir
>> > + git config remote.origin.url $remote_url
>> > + echo "$DIM_PREFIX/$DIM_DRM_INTEL/.git/objects" > .git/objects/info/alternates
>> > + git repack -a -d -l
>> > + remote=origin
>> > + else
>> > + cd $dir
>> > + remote=`get_remote_name $drm_intel_ssh`
>> > + fi
>> > + if ! git branch | grep $name > /dev/null ; then
>> > + git checkout -t $remote/$name
>> > + fi
>> > + cd ..
>> > +}
>> > +
>> > function dim_setup
>> > {
>> > + local remote
>> > +
>> > if [ ! -d $DIM_PREFIX ]; then
>> > echo "please set up your repository directory with:"
>> > echo " mkdir -p $DIM_PREFIX"
>> > @@ -1062,76 +1108,34 @@ function dim_setup
>> > exit 1
>> > fi
>> > cd $DIM_DRM_INTEL
>> > - if ! git remote -v | grep "^origin[[:space:]]" | grep $linux_upstream_git > /dev/null; then
>> > - echo "please set up remote origin for $linux_upstream_git"
>> > - exit 1
>> > - fi
>> > - if ! git remote -v | grep "^$DIM_DRM_INTEL_REMOTE[[:space:]]" | grep $drm_intel_ssh > /dev/null; then
>> > - echo "please set up remote $DIM_DRM_INTEL_REMOTE for $drm_intel_ssh with:"
>> > - echo " git remote add $DIM_DRM_INTEL_REMOTE $drm_intel_ssh"
>> > - echo "or update your configuration."
>> > - exit 1
>> > - fi
>> > - if ! git remote -v | grep "^$DIM_DRM_UPSTREAM_REMOTE[[:space:]]" | grep $drm_upstream_git > /dev/null; then
>> > - echo "please set up remote $DIM_DRM_UPSTREAM_REMOTE for $drm_upstream_git with:"
>> > - echo " git remote add $DIM_DRM_UPSTREAM_REMOTE $drm_upstream_git"
>> > - echo "or update your configuration."
>> > - exit 1
>> > - fi
>> > - cd ..
>> >
>> > - echo "Setting up maintainer-tools ..."
>> > - if [ ! -d maintainer-tools ]; then
>> > - git clone --reference=$DIM_PREFIX/$DIM_DRM_INTEL/.git $drm_intel_ssh maintainer-tools
>> > - fi
>> > - cd maintainer-tools
>> > - git config remote.origin.url $drm_intel_ssh
>> > - echo "$DIM_PREFIX/$DIM_DRM_INTEL/.git/objects" > .git/objects/info/alternates
>> > - git repack -a -d -l
>> > - if ! git branch | grep maintainer-tools > /dev/null ; then
>> > - git checkout -t origin/maintainer-tools
>> > - fi
>> > - cd ..
>> > + # check remote configuration
>> > + remote=`get_remote_name $linux_upstream_git`
>> > + remote=`get_remote_name $drm_intel_ssh`
>> > + remote=`get_remote_name $drm_upstream_git`
>> >
>> > - echo "Setting up drm-intel-rerere ..."
>> > - if [ ! -d drm-intel-rerere ]; then
>> > - git clone --reference=$DIM_PREFIX/$DIM_DRM_INTEL/.git $drm_intel_ssh drm-intel-rerere
>> > - fi
>> > - cd drm-intel-rerere
>> > - git config remote.origin.url $drm_intel_ssh
>> > - echo "$DIM_PREFIX/$DIM_DRM_INTEL/.git/objects" > .git/objects/info/alternates
>> > - git repack -a -d -l
>> > - if ! git branch | grep rerere-cache > /dev/null ; then
>> > - git checkout -t origin/rerere-cache
>> > - fi
>> > cd ..
>> >
>> > - echo "Setting up drm-intel-nightly ..."
>> > - if [ ! -d drm-intel-nightly ]; then
>> > - git clone --reference=$DIM_PREFIX/$DIM_DRM_INTEL/.git $drm_intel_ssh drm-intel-nightly
>> > - fi
>> > + setup_aux_checkout maintainer-tools $drm_intel_ssh maintainer-tools
>> > +
>> > + setup_aux_checkout rerere-cache $drm_intel_ssh drm-intel-rerere
>> > +
>> > + setup_aux_checkout drm-intel-nightly $drm_intel_ssh drm-intel-nightly
>> > cd drm-intel-nightly
>> > - mkdir -p .git/rr-cache
>> > - git config remote.origin.url $drm_intel_ssh
>> > - echo "$DIM_PREFIX/$DIM_DRM_INTEL/.git/objects" > .git/objects/info/alternates
>> > - git repack -a -d -l
>> > - if ! git branch | grep drm-intel-nightly > /dev/null ; then
>> > - git checkout -t origin/drm-intel-nightly
>> > - fi
>> > if git remote | grep drm-upstream > /dev/null ; then
>> > git config remote.drm-upstream.url $drm_upstream_git
>> > else
>> > - git remote add drm-upstream $drm_upstream_git
>> > + remote=`get_remote_name $drm_upstream_git`
>> > fi
>> > if git remote | grep sound-upstream > /dev/null ; then
>> > git config remote.sound-upstream.url $sound_upstream_git
>> > else
>> > - git remote add sound-upstream $sound_upstream_git
>> > + remote=`get_remote_name $sound_upstream_git`
>> > fi
>> > if git remote | grep driver-core-upstream > /dev/null ; then
>> > git config remote.driver-core-upstream.url $driver_core_upstream_git
>> > else
>> > - git remote add driver-core-upstream $driver_core_upstream_git
>> > + remote=`get_remote_name $driver_core_upstream_git`
>> > fi
>> >
>> > echo "dim setup successfully completed!"
>>
>> --
>> Jani Nikula, Intel Open Source Technology Center
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Jani Nikula, Intel Open Source Technology Center
More information about the dri-devel
mailing list