Skip to content

Debugging

Techniques for troubleshooting workflows.

Increase logging verbosity:

Terminal window
java -jar copybara.jar migrate copy.bara.sky export -v
java -jar copybara.jar migrate copy.bara.sky export -vv # More verbose

See what would happen without making changes:

Terminal window
java -jar copybara.jar migrate copy.bara.sky export --dry-run

Use folder destination to preview output:

Terminal window
java -jar copybara.jar migrate copy.bara.sky export \
--folder-destination /tmp/output

Then inspect:

Terminal window
find /tmp/output -type f
diff -r /tmp/output expected/

Check config before running:

Terminal window
java -jar copybara.jar validate copy.bara.sky export

Create a test workflow:

core.workflow(
name = "test-transforms",
origin = folder.origin(),
destination = folder.destination(),
authoring = authoring.overwrite("Test <test@example.com>"),
transformations = [
# Your transforms here
],
)

Run locally:

Terminal window
java -jar copybara.jar migrate copy.bara.sky test-transforms \
--folder-origin /path/to/source \
--folder-destination /tmp/output

Find last synced commit:

Terminal window
# In destination repo
git log --grep="GitOrigin-RevId" -1
# Shows:
# GitOrigin-RevId: abc123def456

Test which files match:

# Temporarily use very specific include
origin_files = glob(["src/specific-file.txt"])

Then expand as needed.

In dynamic transforms:

def _my_transform(ctx):
ctx.console.info("Processing files...")
for f in ctx.run(glob(["**"])):
ctx.console.info("Found: " + f)
return ctx.success()

Save console output to file:

Terminal window
java -jar copybara.jar migrate copy.bara.sky export \
--console-file-path copybara.log 2>&1 | tee copybara.log
Terminal window
java -jar copybara.jar migrate copy.bara.sky export \
--folder-destination /tmp/test
find /tmp/test -type f
Terminal window
java -jar copybara.jar migrate copy.bara.sky export \
--folder-destination /tmp/test
grep -r "old_text" /tmp/test # Should not find
grep -r "new_text" /tmp/test # Should find
Terminal window
java -jar copybara.jar migrate copy.bara.sky export \
--folder-destination /tmp/test
cd /tmp/test
git log -1

Use a regex tester or:

# Python
import re
pattern = r"your_pattern"
text = "your text"
print(re.findall(pattern, text))

Get information about a workflow:

Terminal window
java -jar copybara.jar info copy.bara.sky export