405ebbcade
Review URL: https://codereview.appspot.com/6481066 git-svn-id: http://skia.googlecode.com/svn/trunk@5291 2bbb7eff-a529-9590-31e7-b0007b416f81
65 lines
2.2 KiB
Bash
Executable File
65 lines
2.2 KiB
Bash
Executable File
#/bin/bash
|
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# roll_autogen.sh: Helper script for removing old revisions from an svn
|
|
# repository. Unfortunately, the only way to discard old revisions is to clone
|
|
# the repository locally, use svnadmin to dump a range of commits from the local
|
|
# copy, re-import them into a brand-new repository, "reset" the original repo,
|
|
# and then import the commits from the new repository into the original. This
|
|
# script automates all of that except for resetting the original repository.
|
|
|
|
REPO=${REPO:-"https://skia-autogen.googlecode.com"}
|
|
REVS_TO_KEEP=${REVS_TO_KEEP:-50}
|
|
REPO_SVN="${REPO}/svn"
|
|
CLONE_DIR="local_clone_dir"
|
|
LOCAL_CLONE="$(pwd)/${CLONE_DIR}"
|
|
|
|
echo "Creating local repository in ${LOCAL_CLONE}"
|
|
svnadmin create ${LOCAL_CLONE}
|
|
pushd ${LOCAL_CLONE}/hooks > /dev/null
|
|
echo "#!/bin/sh" > pre-revprop-change
|
|
chmod 755 pre-revprop-change
|
|
popd > /dev/null
|
|
|
|
# Determine the latest revision. Note that any revisions committed while we
|
|
# were syncing will be lost forever!
|
|
END=`svn info ${REPO_SVN} | grep Revision | cut -c11-`
|
|
START=$((END-REVS_TO_KEEP))
|
|
DUMPFILE="skia-autogen_r${START}-${END}.dump"
|
|
|
|
echo "Cloning ${REPO_SVN} into ${LOCAL_CLONE}..."
|
|
svnsync init file://${LOCAL_CLONE} ${REPO_SVN}
|
|
svnsync --non-interactive sync file://${LOCAL_CLONE}
|
|
|
|
echo "Dumping revisions ${START} to ${END} to ${DUMPFILE}."
|
|
svnadmin dump --revision ${START}:${END} ${LOCAL_CLONE} > ${DUMPFILE}
|
|
|
|
echo "Removing temporary local clone."
|
|
rm -rf ${LOCAL_CLONE}
|
|
|
|
echo "Re-creating local clone from ${DUMPFILE}."
|
|
svnadmin create ${LOCAL_CLONE}
|
|
svnadmin load ${LOCAL_CLONE} < ${DUMPFILE}
|
|
|
|
echo "Deleting ${DUMPFILE}"
|
|
rm ${DUMPFILE}
|
|
|
|
echo "Now you need to reset the remote repository. Typically, a link to do this"
|
|
echo "can be found at (${REPO}/adminSource).
|
|
echo "Please do so and press any key to continue."
|
|
read -n 1 -s
|
|
|
|
echo "Syncing ${LOCAL_CLONE} to ${REPO_SVN}."
|
|
svnsync init ${REPO_SVN} file://${LOCAL_CLONE}
|
|
svnsync sync ${REPO_SVN}
|
|
|
|
echo "Removing temporary local clone."
|
|
rm -rf ${LOCAL_CLONE}
|
|
|
|
echo "Removing local checkout."
|
|
rm -rf ${CHECKOUT_DIR}
|
|
|
|
echo "Finished!"
|