/// <summary> /// Create a new local branch with the specified name /// </summary> /// <param name="name">The name of the branch.</param> /// <param name="committish">Revparse spec for the target commit.</param> /// <param name="allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> /// <returns>A new <see cref="Branch"/>.</returns> public static Branch Add(this BranchCollection branches, string name, string committish, bool allowOverwrite = false) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(committish, "committish"); var commit = branches.repo.LookupCommit(committish); return(branches.Add(name, commit, allowOverwrite)); }
/// <summary> /// Initializes a new instance of the <see cref = "Repository" /> class, providing ooptional behavioral overrides through <paramref name="options"/> parameter. /// <para>For a standard repository, <paramref name = "path" /> should either point to the ".git" folder or to the working directory. For a bare repository, <paramref name = "path" /> should directly point to the repository folder.</para> /// </summary> /// <param name = "path"> /// The path to the git repository to open, can be either the path to the git directory (for non-bare repositories this /// would be the ".git" folder inside the working directory) or the path to the working directory. /// </param> /// <param name="options"> /// Overrides to the way a repository is opened. /// </param> public Repository(string path, RepositoryOptions options = null) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); Ensure.Success(NativeMethods.git_repository_open(out handle, path)); RegisterForCleanup(handle); bool isBare = NativeMethods.RepositoryStateChecker(handle, NativeMethods.git_repository_is_bare); Func <Index> indexBuilder = () => new Index(this); string configurationGlobalFilePath = null; string configurationSystemFilePath = null; if (options != null) { bool isWorkDirNull = string.IsNullOrEmpty(options.WorkingDirectoryPath); bool isIndexNull = string.IsNullOrEmpty(options.IndexPath); if (isBare && (isWorkDirNull ^ isIndexNull)) { throw new ArgumentException("When overriding the opening of a bare repository, both RepositoryOptions.WorkingDirectoryPath an RepositoryOptions.IndexPath have to be provided."); } isBare = false; if (!isIndexNull) { indexBuilder = () => new Index(this, options.IndexPath); } if (!isWorkDirNull) { Ensure.Success(NativeMethods.git_repository_set_workdir(handle, options.WorkingDirectoryPath)); } configurationGlobalFilePath = options.GlobalConfigurationLocation; configurationSystemFilePath = options.SystemConfigurationLocation; } if (!isBare) { index = indexBuilder(); } commits = new CommitCollection(this); refs = new ReferenceCollection(this); branches = new BranchCollection(this); tags = new TagCollection(this); info = new Lazy <RepositoryInformation>(() => new RepositoryInformation(this, isBare)); config = new Lazy <Configuration>(() => RegisterForCleanup(new Configuration(this, configurationGlobalFilePath, configurationSystemFilePath))); remotes = new Lazy <RemoteCollection>(() => new RemoteCollection(this)); odb = new Lazy <ObjectDatabase>(() => new ObjectDatabase(this)); diff = new Diff(this); notes = new NoteCollection(this); }
/// <summary> /// Renames an existing local branch with a new name. /// </summary> /// <param name="currentName">The current branch name.</param> /// <param name="newName">The new name the existing branch should bear.</param> /// <param name="allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> /// <returns>A new <see cref="Branch"/>.</returns> public static Branch Move(this BranchCollection branches, string currentName, string newName, bool allowOverwrite = false) { Ensure.ArgumentNotNullOrEmptyString(currentName, "currentName"); Ensure.ArgumentNotNullOrEmptyString(newName, "newName"); Branch branch = branches[currentName]; if (branch == null) { throw new LibGit2SharpException("No branch named '{0}' exists in the repository."); } return(branches.Move(branch, newName, allowOverwrite)); }
/// <summary> /// Deletes the branch with the specified name. /// </summary> /// <param name="name">The name of the branch to delete.</param> /// <param name="isRemote">True if the provided <paramref name="name"/> is the name of a remote branch, false otherwise.</param> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> public static void Remove(this BranchCollection branches, string name, bool isRemote = false) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); string branchName = isRemote ? Reference.RemoteTrackingBranchPrefix + name : name; Branch branch = branches[branchName]; if (branch == null) { return; } branches.Remove(branch); }
/// <summary> /// Create a new local branch with the specified name /// </summary> /// <param name="name">The name of the branch.</param> /// <param name="committish">Revparse spec for the target commit.</param> /// <param name="allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> /// <returns>A new <see cref="Branch"/>.</returns> public static Branch Add(this BranchCollection branches, string name, string committish, bool allowOverwrite = false) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(committish, "committish"); var commit = branches.repo.LookupCommit(committish); var createdFrom = committish != "HEAD" ? committish : branches.repo.Info.IsHeadDetached ? commit.Sha : branches.repo.Head.Name; return(branches.Add(name, commit, allowOverwrite, "branch: Created from " + createdFrom)); }
/// <summary> /// Create a new local branch with the specified name /// </summary> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> /// <param name="name">The name of the branch.</param> /// <param name="committish">Revparse spec for the target commit.</param> /// <param name="signature">The identity used for updating the reflog</param> /// <param name="logMessage">The optional message to log in the <see cref="ReflogCollection"/></param> /// <param name="allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param> /// <returns>A new <see cref="Branch"/>.</returns> public static Branch Add(this BranchCollection branches, string name, string committish, Signature signature, string logMessage = null, bool allowOverwrite = false) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(committish, "committish"); var commit = branches.repo.LookupCommit(committish); if (logMessage == null) { var createdFrom = committish != "HEAD" ? committish : branches.repo.Info.IsHeadDetached ? commit.Sha : branches.repo.Head.Name; logMessage = "branch: Created from " + createdFrom; } return branches.Add(name, commit, signature, logMessage, allowOverwrite); }
/// <summary> /// Initializes a new instance of the <see cref = "Repository" /> class. /// <para>For a standard repository, <paramref name = "path" /> should point to the ".git" folder. For a bare repository, <paramref name = "path" /> should directly point to the repository folder.</para> /// </summary> /// <param name = "path">The path to the git repository to open.</param> public Repository(string path) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); int res = NativeMethods.git_repository_open(out handle, PosixPathHelper.ToPosix(path)); Ensure.Success(res); isBare = NativeMethods.git_repository_is_bare(handle); if (!isBare) { index = new Index(this); } commits = new CommitCollection(this); refs = new ReferenceCollection(this); branches = new BranchCollection(this); tags = new TagCollection(this); info = new Lazy <RepositoryInformation>(() => new RepositoryInformation(this, isBare)); config = new Lazy <Configuration>(() => new Configuration(this)); remotes = new Lazy <RemoteCollection>(() => new RemoteCollection(this)); }
internal BranchCollection(LibGit2Sharp.BranchCollection collection) => this.innerCollection = collection;
/// <summary> /// Create a new local branch with the specified name, using the default reflog message /// </summary> /// <param name="name">The name of the branch.</param> /// <param name="committish">Revparse spec for the target commit.</param> /// <param name="allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param> /// <param name="branches">The <see cref="BranchCollection"/> being worked with.</param> /// <returns>A new <see cref="Branch"/>.</returns> public static Branch Add(this BranchCollection branches, string name, string committish, bool allowOverwrite = false) { return(Add(branches, name, committish, null, null, allowOverwrite)); }
/// <summary> /// Initializes a new instance of the <see cref="Repository"/> class, providing ooptional behavioral overrides through <paramref name="options"/> parameter. /// <para>For a standard repository, <paramref name="path"/> should either point to the ".git" folder or to the working directory. For a bare repository, <paramref name="path"/> should directly point to the repository folder.</para> /// </summary> /// <param name="path"> /// The path to the git repository to open, can be either the path to the git directory (for non-bare repositories this /// would be the ".git" folder inside the working directory) or the path to the working directory. /// </param> /// <param name="options"> /// Overrides to the way a repository is opened. /// </param> public Repository(string path, RepositoryOptions options = null) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); try { handle = Proxy.git_repository_open(path); RegisterForCleanup(handle); isBare = Proxy.git_repository_is_bare(handle); Func <Index> indexBuilder = () => new Index(this); string configurationGlobalFilePath = null; string configurationXDGFilePath = null; string configurationSystemFilePath = null; if (options != null) { bool isWorkDirNull = string.IsNullOrEmpty(options.WorkingDirectoryPath); bool isIndexNull = string.IsNullOrEmpty(options.IndexPath); if (isBare && (isWorkDirNull ^ isIndexNull)) { throw new ArgumentException( "When overriding the opening of a bare repository, both RepositoryOptions.WorkingDirectoryPath an RepositoryOptions.IndexPath have to be provided."); } isBare = false; if (!isIndexNull) { indexBuilder = () => new Index(this, options.IndexPath); } if (!isWorkDirNull) { Proxy.git_repository_set_workdir(handle, options.WorkingDirectoryPath); } configurationGlobalFilePath = options.GlobalConfigurationLocation; configurationXDGFilePath = options.XdgConfigurationLocation; configurationSystemFilePath = options.SystemConfigurationLocation; } if (!isBare) { index = indexBuilder(); } commits = new CommitLog(this); refs = new ReferenceCollection(this); branches = new BranchCollection(this); tags = new TagCollection(this); stashes = new StashCollection(this); info = new Lazy <RepositoryInformation>(() => new RepositoryInformation(this, isBare)); config = new Lazy <Configuration>( () => RegisterForCleanup(new Configuration(this, configurationGlobalFilePath, configurationXDGFilePath, configurationSystemFilePath))); odb = new Lazy <ObjectDatabase>(() => new ObjectDatabase(this)); diff = new Diff(this); notes = new NoteCollection(this); ignore = new Ignore(this); network = new Lazy <Network>(() => new Network(this)); pathCase = new Lazy <PathCase>(() => new PathCase(this)); submodules = new SubmoduleCollection(this); EagerlyLoadTheConfigIfAnyPathHaveBeenPassed(options); } catch { CleanupDisposableDependencies(); throw; } }
public static Branch Move(this BranchCollection branches, string currentName, string newName, bool allowOverwrite = false) { return Rename(branches, currentName, newName, allowOverwrite); }