Hi,

If the target folder (app_path/ in the case of a single tenant cartridge or
tenants/tenant_id/ in multi-tenant cartridges) is not empty when checking
out from the git repository, what is the intended behaviour that cartridge
agent follows?

In
org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.git.impl.GitBasedArtifactRepository.checkout()
method the following code segment is a bit confusing on this matter.

       File gitRepoDir = new File(gitRepoCtx.getGitLocalRepoPath());
       if (!gitRepoDir.exists()) {
            *// this is never satisfied since gitRepoDir is created when
creating the git repo context - initGitContext()*
           return cloneRepository(gitRepoCtx);
       }
       else {
           if (isValidGitRepo(gitRepoCtx)) {
                 // already cloned, needs to pull
               if (log.isDebugEnabled()) {
                   log.debug("Existing git repository detected for tenant "
+ gitRepoCtx.getTenantId() + ", no clone required");
               }

               return pullAndHandleErrors(gitRepoCtx);

           } else {
               // not a valid git repo, check if the directory is non-empty
               if (gitRepoDir.list().length > 0) {
                   // directory is non empty. sync existing artifacts with
the remote repository
                   if (syncInitialLocalArtifacts(gitRepoCtx)) {
                       log.info("Existing local artifacts for tenant [" +
gitRepoCtx.getTenantId() + "] synchronized with remote repository
successfully");
                       // pull any changes from the remote repo
                      * // this will delete the folder and re clone if the
configuration is invalid.*
                       return pullAndHandleErrors(gitRepoCtx);
                   }
                   return false;

               } else {
                   // directory is empty, clone
                   *// this is where the initial cloning happens*
                   return cloneRepository(gitRepoCtx);
               }
           }
       }



Regards,
Chamila de Alwis
Software Engineer | WSO2 | +94772207163
Blog: code.chamiladealwis.com

Reply via email to