1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 06:02:11 +02:00
cdt/releng/scripts/rebase_helper.sh
Torbjörn Svensson e632011f2c Bug 568728: Drop execute permission on files
Add enforecment script that verifies that only specified file types are
allowed to be mared as executable.

Change-Id: I4b40e3a46b03bfc78a9dcd52e8bf29cb079b7f3b
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
2020-11-18 17:38:22 +01:00

96 lines
3.6 KiB
Bash
Executable file

#!this_is_not_really_a_script
echo this is not really a script, run the steps by hand as there are manual steps
exit 1
###############################################################################
# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
###############################################################################
#####
# Prerequisites
# - Python installed and on PATH
# - EASE + Py4J adapter from http://download.eclipse.org/ease/update/release select the following:
# - EASE Language Support -> EASE Py4J Support (Incubation)
# - EASE Modules -> Ease Modules (Incubation)
# - ECLIPSE environment variable set to path to eclipse
# - or update the script below
# - Import formattersettings.xml and cleanupsettings.xml into your workspace and set Formatter and Cleanup actions to CDT
# Default ECLIPSE if not set
: ${ECLIPSE:=/scratch/eclipse/eclipse-committers-2018-12-M2/eclipse}
#####
# Step 1: Checkout the commit you want to rebase
git checkout FETCH_HEAD
#####
# Step 2: Get the patch in the new CDT code formatting standard on a new branch 'commit_to_rebase'
git checkout -b commit_to_rebase
# Rebase change onto this commit, where all the formatter settings and EPLv2 is done, but the
# code has not been formatted yet. If your original commit is not too far behind this
# will finish without conflicts.
git rebase 35996a5c5ca5c254959ba48241eaada6dbf8628d
##
# Run code cleanup/formatting on all the Java files in the commit
# A. Close all open editors in Eclipse
# B. Open all filed modified in the commit
git diff-tree --no-commit-id --name-only -r commit_to_rebase -- *.java | xargs $ECLIPSE
# C. Run cleanup.py on them using Eclipse EASE
# D. Remove trailing whitespace on all relevant files
git show master:.gitattributes | awk '/# remove trailing whitespace/{do getline; while ($0 ~ /^#/); print $1}' |
while read i ; do
echo "Removing trailing whitespace on $i files"
git diff-tree --no-commit-id --name-only -r commit_to_rebase -- "$i" | xargs --no-run-if-empty sed -i 's/[ \t]*$//'
done
##
# Save the formatting on the branch
git add -u
git commit --amend --reuse-message=HEAD
#####
# Step 3: Create a commit that has only the files edited cleaned up, but no other ones
# Start by checking out to a new branch the same commit as above with the formatter settings
git checkout 35996a5c5ca5c254959ba48241eaada6dbf8628d -b commit_to_format
##
# Run cleanup + trailing whitespace removal as above (Step 2 A-D)
##
# Save the files which are now formatted, but without the change you wish to rebase in a commit
git add -u
git commit -m"formatted files"
#####
# Step 4: Apply the change so you have a history on commit_to_format branch that is two ahead of 35996a5c5c
# the first being the formatted files, the second being the change we are trying to get onto master
# Diff the two branches we just made, that diff is the real work you are trying to get on master, and apply
# that diff
git diff commit_to_format..commit_to_rebase | git apply
# Save the edit, reusing your original commit message (and therefore Change-Id!)
git add -u
git commit --reuse-message=commit_to_rebase
#####
# Step 5: Cherry-pick the new commit onto master
git checkout master
git cherry-pick commit_to_format
#####
# Step 6: Push commit to gerrit
git push origin master:refs/for/master
#####
# Step 7: Cleanup
git branch -D commit_to_rebase
git branch -D commit_to_format