# The form data below was edited by tom_tyler # Perforce Workshop Jobs # # Job: The job name. 'new' generates a sequenced job number. # # Status: Job status; required field. There is no enforced or # promoted workflow for transition of jobs from one # status to another, just a set of job status values # for users to apply as they see fit. Possible values: # # open - Issue is available to be worked on. # # inprogress - Active development is in progress. # # blocked - Issue cannot be implemented for some reason. # # fixed - Fixed, optional status to use before closed. # # closed - Issue has been dealt with definitively. # # punted - Decision made not to address the issue, # possibly not ever. # # suspended - Decision made not to address the issue # in the immediate future, but noting that it may # have some merit and may be revisited later. # # duplicate - Duplicate of another issue that. # # obsolete - The need behind the request has become # overcome by events. # # Project: The project this job is for. Required. # # Severity: [A/B/C] (A is highest) Required. # # ReportedBy The user who created the job. Can be changed. # # ReportedDate: The date the job was created. Automatic. # # ModifiedBy: The user who last modified this job. Automatic. # # ModifiedDate: The date this job was last modified. Automatic. # # OwnedBy: The owner, responsible for doing the job. Optional. # # Description: Description of the job. Required. # # DevNotes: Developer's comments. Optional. Can be used to # explain a status, e.g. for blocked, punted, # obsolete or duplicate jobs. May also provide # additional information such as the earliest release # in which a bug is known to exist. # # Component: Projects may use this optional field to indicate # which component of the project a given job is associated # with. # # For the SDP, the list of components is defined in: # //guest/perforce_software/sdp/tools/components.txt # # Type: Type of job [Bug/Doc/Feature/Problem]. Required. # # Bug: is a problem that is fairly well understood, # e.g. one for which there is a reproduction or clear # articulation of the problem. # # Doc: A Documentation fix. # # Feature: An enhancement request, perhaps adding # a new product features, improving maintainability, # essentially any new software improvement other than # a fix to something broken. # # Problem: a suspected bug, or one without a clear # understanding of exactly what is broken. # # Release: Release in which job is intended to be fixed. Job: BBI-23 Status: closed Project: perforce_software-p4bbi Severity: A ReportedBy: tom_tyler ReportedDate: 2024/12/06 17:40:55 ModifiedBy: tom_tyler ModifiedDate: 2024/12/06 17:57:09 OwnedBy: tom_tyler Description: 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. Type: Feature