Files
UnrealEngineUWP/Engine/Source/Programs/AutomationTool/Scripts/StreamCopyDescription.Automation.cs
Marc Audy 643171b445 Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3021292)
#lockdown Nick.Penwarden
#rb None

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3016321 on 2016/06/16 by Ori.Cohen

	Refactor constraint instance so that we can easily swap parameters at runtime using profiles.

Change 3016367 on 2016/06/16 by Marc.Audy

	Strip #lockdown from changelists as well

Change 3016380 on 2016/06/16 by Martin.Wilson

	Fixes for socket copying in Persona (mode to preserve bone attachment & fix for duplicating same socket multiple times)

Change 3016396 on 2016/06/16 by Zak.Middleton

	#ue4 - Fix bad call to RemoveAt() in FFinalPostProcessSettings::UpdateEntry() causing potential infinite loop.

	#jira UE-32036
	Github #2504

	Merging using //UE4/Dev-Framework_to_//UE4/Release-4.12 (reversed)

Change 3016477 on 2016/06/16 by Marc.Audy

	Fix initialization order compile warning
	Actually initialize LastKnownScale

Change 3017624 on 2016/06/17 by James.Golding

	- Remove DestructibleActor.h from Engine.h
	- Remove SkeletalMesh.h from EnginePrivate.h

Change 3017657 on 2016/06/17 by Benn.Gallagher

	PR #2253: Fix UDestructibleComponent::AddImpulseAtLocation (Contributed by mik14a)
	#jira UE-29280

Change 3017658 on 2016/06/17 by Benn.Gallagher

	PR #1840 fixed generating patch with DestructibleMesh assets (Contributed by Pierdek)
	#jira UE-24231

Change 3017661 on 2016/06/17 by Benn.Gallagher

	Dynamic space switching for anim dynamics, also exposed a bunch of properties as optional pins.
	#jira UEFW-163

Change 3017914 on 2016/06/17 by James.Golding

	- Add WITH_EDITORONLY_DATA around ProgressiveDrawingFraction
	- Add number of morph targets to SkelMesh asset registry tags

Change 3017915 on 2016/06/17 by James.Golding

	Move util to find debugged node from FAnimationViewportClient to UAnimGraphNode_SkeletalControlBase

Change 3017916 on 2016/06/17 by James.Golding

	Remove unused FMorphTargetMap struct

Change 3018038 on 2016/06/17 by Aaron.McLeran

	UE-32124 Crash when Deleting Concatenator Node while Playing Sound Cue

Change 3018048 on 2016/06/17 by Mieszko.Zielinski

	Made GameplayDebugger's HUD toggling persist over tool toggling #UE4

Change 3018068 on 2016/06/17 by Mieszko.Zielinski

	Improved navigaiton-related condition in USceneComponent::PostUpdateNavigationData to avoid doing unnecessary work #Orion

	Thich change also fixes USceneComponent not working in client-side dynamic navmesh generation

Change 3018529 on 2016/06/17 by Aaron.McLeran

	Passing in sendlist on CreateSource for xaudio2 in effort to avoid lag on AMD with CreateSourceVoice

	As per this thread:
	https://udn.unrealengine.com/questions/298497/xaudio2-setoutputvoices-lag.html

Change 3018907 on 2016/06/18 by James.Golding

	UE-32004 Add EngineDefines.h to CameraTypes.h for WORLD_MAX

Change 3019372 on 2016/06/20 by James.Golding

	- Initial add of OrientationDriver node
	  - UI for importing poses from PoseAset not yet working
	- Add FQuat::AngularDistance

Change 3019373 on 2016/06/20 by James.Golding

	PSD test assets

Change 3019444 on 2016/06/20 by Jurre.deBaare

	Added advanced preview scene, this allows specific profiles to be set altering the Persona and Static mesh editor scene

Change 3019565 on 2016/06/20 by Lina.Halper

	#anim : prioritize socket name over bone name

	#jira : UE-24847

Change 3019712 on 2016/06/20 by Jurre.deBaare

	Changed the way the advanced preview tab is spawned for Persona (otherwise would cause a crash in anim graph editor)

Change 3020010 on 2016/06/20 by Aaron.McLeran

	Implementing CL 3019996 in Dev-Framework

	Proper default LPF values to avoid situation when going to area with no reverb volume

Change 3020067 on 2016/06/20 by Ori.Cohen

	Add constraint profiles to physics assets.

Change 3020110 on 2016/06/20 by Lina.Halper

	Github PR: mesh merge crash fix

	#jira : UE-19569

Change 3020167 on 2016/06/20 by Ori.Cohen

	Added the ability to add forces and impulses to all bodies in a skeletal mesh component. Refactored iteration of bodies below in skeletal mesh component.

Change 3020324 on 2016/06/20 by Ori.Cohen

	Bring back cone constraint visualization, but with some improvements like colors and free vs locked.
	Turn on constraint visualization when drawing a skeletal mesh with constraint show flags.

Change 3020342 on 2016/06/20 by Ori.Cohen

	Fix constraint crash when trying to wake up an actor that hasn't been added into the scene yet.

	#JIRA UE-32248

Change 3020349 on 2016/06/20 by mason.seay

	Resaving material assets

Change 3020400 on 2016/06/20 by Lina.Halper

	Disable check single influence on LOD check

	- this doesn't seem to appropriate anymore

	#code review:Alexis.Matte

Change 3020928 on 2016/06/21 by James.Golding

	- Move PSD test assets out of Developer folder
	- Add PSD test AnimBP

Change 3021000 on 2016/06/21 by Ori.Cohen

	Remove ensure from body instance customization. This is a legit case where owner becomes stale (bp recompile for example)

	#JIRA UE-31445

Change 3021017 on 2016/06/21 by Ori.Cohen

	Help static analysis

Change 3021045 on 2016/06/21 by Marc.Audy

	Fix regression with detachment in AActor::OnRep_AttachmentReplication
	#jira UE-32276

[CL 3021299 by Marc Audy in Main branch]
2016-06-21 12:37:19 -04:00

98 lines
3.2 KiB
C#

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using System.Reflection;
using System.Linq;
using AutomationTool;
using UnrealBuildTool;
namespace AutomationTool
{
/// <summary>
/// Generates a changelist description for copying a stream to its parent
/// </summary>
[RequireP4]
public class StreamCopyDescription : BuildCommand
{
/// <summary>
/// Execute the command
/// </summary>
public override void ExecuteBuild()
{
// Get the source and target streams
string Stream = ParseParamValue("Stream", P4Env.BuildRootP4);
string Changes = ParseParamValue("Changes", null);
// Get changes which haven't been copied up from the current stream
string Descriptions;
if (Changes == null)
{
ProcessResult Result = P4.P4(String.Format("interchanges -l -S {0}", Stream), AllowSpew: false);
Descriptions = Result.Output.Replace("\r\n", "\n");
}
else
{
ProcessResult Result = P4.P4(String.Format("changes -l {0}", Changes), AllowSpew: false);
Descriptions = Result.Output.Replace("\r\n", "\n");
}
// Clean any workspace names that may reveal internal information
Descriptions = Regex.Replace(Descriptions, "(Change[^@]*)@.*", "$1", RegexOptions.Multiline);
// Remove changes by the build machine
Descriptions = Regex.Replace(Descriptions, "[^\n]*buildmachine\n(\n|\t[^\n]*\n)*", "");
// Get the last submitted change in the source stream
List<P4Connection.ChangeRecord> ChangeRecords;
if (!P4.Changes(out ChangeRecords, String.Format("-m1 {0}/...", Stream), AllowSpew: false))
{
throw new AutomationException("Couldn't get changes for this branch");
}
// Figure out the target stream
ProcessResult StreamResult = P4.P4(String.Format("stream -o {0}", Stream), AllowSpew: false);
if (StreamResult.ExitCode != 0)
{
throw new AutomationException("Couldn't get stream description for {0}", Stream);
}
string Target = P4Spec.FromString(StreamResult.Output).GetField("Parent");
if(Target == null)
{
throw new AutomationException("Couldn't get parent stream for {0}", Stream);
}
// Write the output file
string OutputDirName = Path.Combine(CommandUtils.CmdEnv.LocalRoot, "Engine", "Intermediate");
CommandUtils.CreateDirectory(OutputDirName);
string OutputFileName = Path.Combine(OutputDirName, "Changes.txt");
using (StreamWriter Writer = new StreamWriter(OutputFileName))
{
Writer.WriteLine("Copying {0} to {1} (Source: {0} @ {2})", Stream, Target.Trim(), ChangeRecords[0].CL);
Writer.WriteLine();
Writer.WriteLine("==========================");
Writer.WriteLine("MAJOR FEATURES + CHANGES");
Writer.WriteLine("==========================");
Writer.WriteLine();
foreach (string Line in Descriptions.Split('\n'))
{
string TrimLine = Line.TrimStart();
if(!TrimLine.StartsWith("#codereview") && !TrimLine.StartsWith("#rb") && !TrimLine.StartsWith("#lockdown"))
{
Writer.WriteLine(Line);
}
}
}
Log("Written {0}.", OutputFileName);
// Open it with the default text editor
Process.Start(OutputFileName);
}
}
}