From b2be438d331d33e4eb3348581a0ec562a9224a18 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 1 Apr 2026 03:31:25 -0400 Subject: [PATCH] Add clean export script for distributing repo without git history Clones from remote, strips .git metadata (keeps .gitignore), and resets all file timestamps to today at midnight for consistent distribution. Co-Authored-By: Claude Opus 4.6 (1M context) --- export-clean-copy.bat | 76 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 export-clean-copy.bat diff --git a/export-clean-copy.bat b/export-clean-copy.bat new file mode 100644 index 0000000..1398ec7 --- /dev/null +++ b/export-clean-copy.bat @@ -0,0 +1,76 @@ +@echo off +setlocal enabledelayedexpansion + +set "TARGET=C:\Users\dohertj2\Desktop\lmxopcua2" +set "REPO=https://gitea.dohertylan.com/dohertj2/lmxopcua.git" + +:: Get today's date at midnight in format YYYY-MM-DD 00:00:00 +for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "DT=%%I" +set "TODAY=%DT:~0,4%-%DT:~4,2%-%DT:~6,2% 00:00:00" + +echo ============================================ +echo LmxOpcUa Clean Export +echo ============================================ +echo. + +:: Step 1: Remove existing folder if it exists, otherwise create it +if exist "%TARGET%" ( + echo Removing existing folder: %TARGET% + rmdir /s /q "%TARGET%" + if errorlevel 1 ( + echo ERROR: Failed to remove %TARGET%. Check if files are in use. + exit /b 1 + ) + echo Removed. +) else ( + echo Target folder does not exist, will be created by git clone. +) +echo. + +:: Step 2: Clone the repository +echo Cloning repository to %TARGET%... +git clone "%REPO%" "%TARGET%" +if errorlevel 1 ( + echo ERROR: git clone failed. + exit /b 1 +) +echo Clone complete. +echo. + +:: Step 3: Remove all git repository info +echo Removing git repository data... +rmdir /s /q "%TARGET%\.git" +if exist "%TARGET%\.gitattributes" del /f /q "%TARGET%\.gitattributes" +echo Git data removed. +echo. + +:: Step 4: Reset all timestamps to today at midnight +echo Setting all timestamps to %TODAY%... + +:: Use PowerShell for reliable recursive timestamp setting +powershell -NoProfile -Command ^ + "$target = '%TARGET%'; " ^ + "$date = Get-Date -Year %DT:~0,4% -Month %DT:~4,2% -Day %DT:~6,2% -Hour 0 -Minute 0 -Second 0; " ^ + "Get-ChildItem -Path $target -Recurse -Force | ForEach-Object { " ^ + " $_.CreationTime = $date; " ^ + " $_.LastWriteTime = $date; " ^ + " $_.LastAccessTime = $date; " ^ + "}; " ^ + "$root = Get-Item $target; " ^ + "$root.CreationTime = $date; " ^ + "$root.LastWriteTime = $date; " ^ + "$root.LastAccessTime = $date; " ^ + "Write-Host ('Timestamps set to ' + $date.ToString('yyyy-MM-dd HH:mm:ss') + ' on all files and folders.')" + +if errorlevel 1 ( + echo WARNING: Some timestamps may not have been updated. +) else ( + echo Timestamps updated. +) + +echo. +echo ============================================ +echo Export complete: %TARGET% +echo ============================================ + +endlocal