###############################################################################
# Copyright (c) 2013 Willink Transformations and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     E.D.Willink - initial API and implementation
###############################################################################
#cronjob: /opt/public/common/apache-ant-1.7.1/bin/ant -f /opt/users/hudsonbuild/.hudson/jobs/cbi-m2t-xpand-0.7/workspace/build/org.eclipse.xpand.releng/promote.xml -Dpromote.properties=/opt/users/hudsonbuild/.hudson/jobs/cbi-m2t-xpand-0.7/workspace/build/org.eclipse.xpand.releng/promote.properties 2>~/promo_logs/cbi-m2t-xpand-0.7-promo-error.txt 1> ~/promo_logs/cbi-m2t-xpand-0.7-promo.txt

# source dir
sourceZipsDir=/opt/users/hudsonbuild/.hudson/jobs/cbi-mdt-ocl-3.0-integration/lastSuccessful/archive/build

# target dir
targetZipsDir=/home/data/httpd/download.eclipse.org/modeling/mdt/ocl/downloads/drops/3.1.0

# group owner of new files
targetGroup=mdtadmin

# type(s) to copy (N, I, M, S, R; default to all)
buildTypes=I

# synch method method (add or replace; add = keep adding new builds; replace = keep 1 build per branch)
synchMethod=add

# if set, update zip will be unpacked into destination dir and use synchMethod above to add or replace contents 
targetUpdateDir=/home/data/httpd/download.eclipse.org/modeling/mdt/ocl/updates/interim/
