Exemple #1
0
 public GitLock(string id, NPath path, GitUser owner, DateTimeOffset locked_at)
 {
     this.id             = id;
     this.path           = path.IsInitialized ? path.ToString() : null;
     this.owner          = owner;
     this.lockedAtString = locked_at.ToUniversalTime().ToString(Constants.Iso8601FormatZ, CultureInfo.InvariantCulture);
 }
Exemple #2
0
        private NPath MoveOctorun(NPath fromPath)
        {
            var toPath = installDetails.InstallationPath;

            Logger.Trace("MoveOctorun fromPath: {0} toPath:{1}", fromPath.ToString(), toPath.ToString());

            CopyHelper.Copy(fromPath, toPath);

            return(installDetails.ExecutablePath);
        }
Exemple #3
0
        public static NPath Resolve(this NPath path)
        {
            // Add a reference to Mono.Posix with an .rsp file in the Assets folder with the line "-r:Mono.Posix.dll" for this to work
#if ENABLE_MONO
            if (!path.IsInitialized || !NPath.IsUnix /* nothing to resolve on windows */ || path.IsRelative || !path.FileExists())
            {
                return(path);
            }
            return(new NPath(Mono.Unix.UnixPath.GetCompleteRealPath(path.ToString())));
#else
            return(path);
#endif
        }
Exemple #4
0
        public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSetupGit = false)
        {
            GeneralConfigure(psi, workingDirectory);

            if (dontSetupGit)
            {
                return;
            }

            //if (gitInstallPath == NPath.Default || gitInstallPath != Environment.GitInstallPath)
            Reset();

            var    pathEntries = new List <string>(envPath);
            string separator   = Environment.IsWindows ? ";" : ":";

            // we can only set this env var if there is a libexec/git-core. git will bypass internally bundled tools if this env var
            // is set, which will break Apple's system git on certain tools (like osx-credentialmanager)
            if (libExecPath.IsInitialized)
            {
                psi.EnvironmentVariables["GIT_EXEC_PATH"] = libExecPath.ToString();
            }

            pathEntries.Add("END");

            var path = string.Join(separator, pathEntries.ToArray()) + separator + Environment.Path;

            var pathEnvVarKey = Environment.GetEnvironmentVariableKey("PATH");

            psi.EnvironmentVariables[pathEnvVarKey] = path;

            //if (Environment.IsWindows)
            //{
            //    psi.EnvironmentVariables["PLINK_PROTOCOL"] = "ssh";
            //    psi.EnvironmentVariables["TERM"] = "msys";
            //}

            var httpProxy = Environment.GetEnvironmentVariable("HTTP_PROXY");

            if (!string.IsNullOrEmpty(httpProxy))
            {
                psi.EnvironmentVariables["HTTP_PROXY"] = httpProxy;
            }

            var httpsProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");

            if (!string.IsNullOrEmpty(httpsProxy))
            {
                psi.EnvironmentVariables["HTTPS_PROXY"] = httpsProxy;
            }
            psi.EnvironmentVariables["DISPLAY"] = "0";

            if (!Environment.IsWindows)
            {
                psi.EnvironmentVariables["GIT_TEMPLATE_DIR"] = Environment.GitInstallPath.Combine("share/git-core/templates");
            }

            if (Environment.IsLinux)
            {
                psi.EnvironmentVariables["PREFIX"] = Environment.GitExecutablePath.Parent;
            }

            var sslCAInfo = Environment.GetEnvironmentVariable("GIT_SSL_CAINFO");

            if (string.IsNullOrEmpty(sslCAInfo))
            {
                var certFile = basePath.Combine("ssl/cacert.pem");
                if (certFile.FileExists())
                {
                    psi.EnvironmentVariables["GIT_SSL_CAINFO"] = certFile.ToString();
                }
            }

/*
 *          psi.WorkingDirectory = workingDirectory;
 *          psi.EnvironmentVariables["HOME"] = NPath.HomeDirectory;
 *          psi.EnvironmentVariables["TMP"] = psi.EnvironmentVariables["TEMP"] = NPath.SystemTemp;
 *
 *          var path = Environment.Path;
 *          psi.EnvironmentVariables["GHU_WORKINGDIR"] = workingDirectory;
 *          var pathEnvVarKey = Environment.GetEnvironmentVariableKey("PATH");
 *
 *          if (dontSetupGit)
 *          {
 *              psi.EnvironmentVariables["GHU_FULLPATH"] = path;
 *              psi.EnvironmentVariables[pathEnvVarKey] = path;
 *              return;
 *          }
 *
 *          Guard.ArgumentNotNull(psi, "psi");
 *
 *          var pathEntries = new List<string>();
 *          string separator = Environment.IsWindows ? ";" : ":";
 *
 *          NPath libexecPath = NPath.Default;
 *          List<string> gitPathEntries = new List<string>();
 *          if (Environment.GitInstallPath.IsInitialized)
 *          {
 *              var gitPathRoot = Environment.GitExecutablePath.Resolve().Parent.Parent;
 *              var gitExecutableDir = Environment.GitExecutablePath.Parent; // original path to git (might be different from install path if it's a symlink)
 *
 *              var baseExecPath = gitPathRoot;
 *              var binPath = baseExecPath;
 *              if (Environment.IsWindows)
 *              {
 *                  if (baseExecPath.DirectoryExists("mingw32"))
 *                      baseExecPath = baseExecPath.Combine("mingw32");
 *                  else
 *                      baseExecPath = baseExecPath.Combine("mingw64");
 *                  binPath = baseExecPath.Combine("bin");
 *              }
 *
 *              libexecPath = baseExecPath.Combine("libexec", "git-core");
 *              if (!libexecPath.DirectoryExists())
 *                  libexecPath = NPath.Default;
 *
 *              if (Environment.IsWindows)
 *              {
 *                  gitPathEntries.AddRange(new[] { gitPathRoot.Combine("cmd").ToString(), gitPathRoot.Combine("usr", "bin") });
 *              }
 *              else
 *              {
 *                  gitPathEntries.Add(gitExecutableDir.ToString());
 *              }
 *
 *              if (libexecPath.IsInitialized)
 *                  gitPathEntries.Add(libexecPath);
 *              gitPathEntries.Add(binPath);
 *
 *              // we can only set this env var if there is a libexec/git-core. git will bypass internally bundled tools if this env var
 *              // is set, which will break Apple's system git on certain tools (like osx-credentialmanager)
 *              if (libexecPath.IsInitialized)
 *                  psi.EnvironmentVariables["GIT_EXEC_PATH"] = libexecPath.ToString();
 *          }
 *
 *          if (Environment.GitLfsInstallPath.IsInitialized && libexecPath != Environment.GitLfsInstallPath)
 *          {
 *              pathEntries.Add(Environment.GitLfsInstallPath);
 *          }
 *          if (gitPathEntries.Count > 0)
 *              pathEntries.AddRange(gitPathEntries);
 *
 *          pathEntries.Add("END");
 *
 *          path = string.Join(separator, pathEntries.ToArray()) + separator + path;
 *
 *          psi.EnvironmentVariables["GHU_FULLPATH"] = path;
 *          psi.EnvironmentVariables[pathEnvVarKey] = path;
 *
 *          //TODO: Remove with Git LFS Locking becomes standard
 *          psi.EnvironmentVariables["GITLFSLOCKSENABLED"] = "1";
 *
 *          if (Environment.IsWindows)
 *          {
 *              psi.EnvironmentVariables["PLINK_PROTOCOL"] = "ssh";
 *              psi.EnvironmentVariables["TERM"] = "msys";
 *          }
 *
 *          var httpProxy = Environment.GetEnvironmentVariable("HTTP_PROXY");
 *          if (!string.IsNullOrEmpty(httpProxy))
 *              psi.EnvironmentVariables["HTTP_PROXY"] = httpProxy;
 *
 *          var httpsProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
 *          if (!string.IsNullOrEmpty(httpsProxy))
 *              psi.EnvironmentVariables["HTTPS_PROXY"] = httpsProxy;
 *          psi.EnvironmentVariables["DISPLAY"] = "0";
 */
        }