mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-29 20:49:19 +00:00
163 lines
3.9 KiB
Plaintext
163 lines
3.9 KiB
Plaintext
#
|
|
# MergeBranch - Merge a branch revision onto the trunk.
|
|
#
|
|
# Usage: MergeBranch file
|
|
#
|
|
# MergeBranch renames the branch revision "file" to "file",branch and
|
|
# checks out the latest revision on the revision trunk for modification.
|
|
#
|
|
# If there are no trunk revisions newer than the branch, then the branch
|
|
# is checked in as the latest trunk revision.
|
|
#
|
|
# Otherwise MergeBranch brings up both revisions on the screen and
|
|
# puts them side by side. A menu is appended to the menu bar to assist
|
|
# the user in the merge process. Checkin the new trunk revision "file"
|
|
# when you finish merging the changes in "file",branch into "file".
|
|
#
|
|
# To add MergeBranch to a menu, execute the following command:
|
|
#
|
|
# AddMenu Project 'MergeBranch' 'MergeBranch "{Active}" ∑∑ "{WorkSheet}"'
|
|
#
|
|
# This script creates three temporary files which are deleted on exit or abort.
|
|
# {ShellDirectory}Compare_File, {ShellDirectory}Compare_State and file,<rev>,
|
|
#
|
|
# MergeBranch calls the script CompareFiles.
|
|
#
|
|
# © Apple Computer, Inc. 1988 - 1990
|
|
# All rights reserved.
|
|
|
|
Set Exit 0
|
|
Begin
|
|
|
|
# Check parameters.
|
|
|
|
If {#} ≠ 1
|
|
Echo "### Usage - {0} file"
|
|
Exit 0
|
|
End
|
|
|
|
# Make sure the file exists
|
|
|
|
If "" == "`Exists -f "{1}"`"
|
|
Echo "### {0} - File ∂"{1}∂" not found"
|
|
Exit 4
|
|
End
|
|
|
|
# Break apart the pathname.
|
|
|
|
Set f "{1}"
|
|
If "{f}" =~ /(≈)®1:(≈)®2/
|
|
Set dir "{®1}:"
|
|
Set f "{®2}"
|
|
Else
|
|
Set dir `directory`
|
|
If "{dir}" =~ /(≈)®1:/
|
|
Set dir "{®1}:"
|
|
End
|
|
End
|
|
|
|
Set path "{dir}{f}"
|
|
|
|
# Get project information on the file.
|
|
|
|
Set info1 "`projectinfo -comments "{path}"`"
|
|
|
|
If "{info1}" =~ /[∂']*(≈)®1,([¬ ∂']+)®2[∂']* ≈Project: (≈∫)®3≈ Task: (≈)®4[ ]«5»Comment: (≈)®5/
|
|
Set file "{®1}"
|
|
Set rev "{®2}"
|
|
Set proj "{®3}"
|
|
Set task "{®4}"
|
|
Set comment "Merged from branch {rev}. {®5}"
|
|
End
|
|
|
|
# Make sure the file is a branch revision.
|
|
|
|
If "{rev}" !~ /≈[a-z]≈/
|
|
Alert "File ∂"{f}∂" is not on a branch."
|
|
Exit 4
|
|
End
|
|
|
|
# If the branch rev is checked out for modification, check it in
|
|
# and call projectinfo again to get the branch's new revision number.
|
|
|
|
If "{rev}" =~ /≈∂+/ OR "{rev}" =~ /≈∂*/
|
|
CheckIn -y "{path}" ≥dev:null
|
|
Set info1 "`projectinfo "{path}"`"
|
|
If "{info1}" =~ /[∂']*(≈)®1,([¬ ∂']+)®2[∂']* ≈Project: (≈∫)®3≈/
|
|
Set file "{®1}"
|
|
Set rev "{®2}"
|
|
Set proj "{®3}"
|
|
End
|
|
End
|
|
|
|
# Get projectinfo on the file's latest trunk revision.
|
|
|
|
Set info2 "`projectinfo -latest -s -project "{proj}" "{f}" ≥ dev:null`"
|
|
If "{info2}" == ""
|
|
Alert "Project ∂"{proj}∂" is not mounted."
|
|
Exit 4
|
|
End
|
|
|
|
If "{info2}" =~ /[∂']*(≈)®1,([¬ ∂']+)®2[∂']*/
|
|
Set file2 "{®1}"
|
|
Set rev2 "{®2}"
|
|
Else
|
|
Alert "Latest rev of File ∂"{f}∂" is checked out for modification. Cannot merge at this time."
|
|
Exit 4
|
|
End
|
|
|
|
# Is the file open as a window?
|
|
|
|
Set wind 0
|
|
For i in `Windows`
|
|
If "{path}" == "{i}"
|
|
Set wind 1
|
|
Break
|
|
End
|
|
End
|
|
|
|
# Rename the branch revision and checkout the trunk revision for modification.
|
|
|
|
Set branchf "{path},{rev}"
|
|
Rename -y "{path}" "{branchf}"
|
|
CheckOut "{path}" -m -t "{task}" -cs "{comment}" -project "{proj}"
|
|
|
|
# If the revisions on the trunk are older than the branch rev then
|
|
# checkin the branch on the trunk (we don't need to merge).
|
|
# Otherwise call comparefiles and let the user do the merge and checkin.
|
|
|
|
If "{rev}" =~ /{rev2}≈/
|
|
|
|
Echo "Include ∂"{path}∂" 'ckid';" | Rez -m -a -o "{branchf}"
|
|
|
|
Rename -y "{branchf}" "{path}"
|
|
|
|
If "{wind}"
|
|
Close "{path}"
|
|
Open "{path}"
|
|
End
|
|
|
|
CheckIn "{path}"
|
|
|
|
Else
|
|
|
|
Open "{path}"
|
|
|
|
CompareFiles "{branchf}" "{path}"
|
|
|
|
If {Status} == 2
|
|
Echo Close ∂""{branchf}"∂" >> "{ShellDirectory}Compare_State"
|
|
Echo Delete ∂""{branchf}"∂" >> "{ShellDirectory}Compare_State"
|
|
Exit 0
|
|
Else If {Status} == 0
|
|
If "{wind}"
|
|
Close "{branchf}"
|
|
End
|
|
Delete "{branchf}"
|
|
CheckOut -cancel -y "{path}"
|
|
End
|
|
|
|
End
|
|
|
|
End
|