#!/usr/bin/env bash
# Copyright (c) 2013, Matthew Attaway
# All rights reserved.
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# this script will take a directory of files with a naming scheme of "foo<revision number>.txt"
# and import them into Perforce, maintaining the revision number.
#
# This script does rename the source files as part of the conversion process. Run this on a copy
# of the files.
#
files=""
for f in $(ls -1);
do
tf=$(echo $f | sed 's/[0-9][0-9]*//');
rev=$(echo $f | grep -E -o '[0-9]+');
if [ -e $f ];
then
mv $f $rev$tf
fi
done
for f in $(ls -1 | sort -n)
do
tf=$(echo $f | sed 's/[0-9][0-9]*//');
rev=$(echo $f | grep -E -o '[0-9]+');
ext=$(echo $tf | cut -d '.' -f2)
base=$(echo $tf | cut -d '.' -f1)
cp -f $f $tf
p4 reconcile $tf
p4 submit -d "Import $base$rev.$ext into Perforce" ...
done