Each time you run tailor, it execute the following steps:
- Fetch new PendingChangesets: if the StateFile is empty, tailor asks the SourceRepository to retrieve the new patches, if any, since the LastAppliedChangeset, and stores them in the StateFile.
- Loop over each PendingChangesets in the StateFile and
- Actually pull and apply the given patch to the WorkingDirectory of the SourceRepository
- Eventually copy the source WorkingDirectory to the target one, when using DisjunctWorkingDirectories
- Invoke the BeforeCommitHook
- Replay each ChangeSet in the patch on the TargetRepository working directory
- Commit the changeset as a new patch on the target system, preserving as much information as (humanly) possible (that is, author, timestamp, changelog...)
- Invoke the AfterCommitHook?
- Finally annotate the StateFileJournal about the new LastAppliedChangeset
- In any case, finalize the StateFile.
