Implement 'injections' to workaround reproducible import failures.
The 'p4 reconcile' command BBI process relies on is unable to detect
"symlink refactoring conversions." For example, if a file or
directory is replaced by a symlink of the same name between baselines,
the UPDATE action for the second baseline will fail. (See also: job000441).
It might seem elegent to try and detect all possible refactoring
scenarios and deal with them all appropriately. However, there are
challenges with doing proactive detection, esepcially on large baselines.
Another option is to simply attempt submits first, and then react when
the submit fails, e.g. looking for 'readlink:' errors, telltale signs
of symlink refactoring conversions.
But since the realm of things that can break an import is large, even
with the relatively basic BBI approach, a very pragmatic "injection"
approach is needed. This is an approach whereby a any symlink refactorying
issues (or any other reproducible issues!) that break imports are discovered
via a trial-and-error process. Once discovered, an 'injection' script is
created to address the specific issue for that specifc baseline.
Whenever there is a baseline UPDATE action that fails for some reproducible
reason, you figure out why, and put together an "injection," a hand-crafted
bash shell script that replaces manual processing a human operator might do
to workaround issues. So if a file gets converted to a symlink, the 'p4
rec' will fail on the first pass. Then an injection is created, which can
simply delete the file and submit it.