fix incorrect folder name for julia-0.6.x
Former-commit-id: ef2c7401e0876f22d2f7762d182cfbcd5a7d9c70
This commit is contained in:
81
julia-0.6.3/share/julia/base/libgit2/rebase.jl
Normal file
81
julia-0.6.3/share/julia/base/libgit2/rebase.jl
Normal file
@@ -0,0 +1,81 @@
|
||||
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
||||
|
||||
function GitRebase(repo::GitRepo, branch::GitAnnotated, upstream::GitAnnotated;
|
||||
onto::Nullable{GitAnnotated}=Nullable{GitAnnotated}(),
|
||||
opts::RebaseOptions = RebaseOptions())
|
||||
rebase_ptr_ptr = Ref{Ptr{Void}}(C_NULL)
|
||||
@check ccall((:git_rebase_init, :libgit2), Cint,
|
||||
(Ptr{Ptr{Void}}, Ptr{Void}, Ptr{Void}, Ptr{Void},
|
||||
Ptr{Void}, Ptr{RebaseOptions}),
|
||||
rebase_ptr_ptr, repo.ptr, branch.ptr, upstream.ptr,
|
||||
isnull(onto) ? C_NULL : Base.get(onto).ptr, Ref(opts))
|
||||
return GitRebase(repo, rebase_ptr_ptr[])
|
||||
end
|
||||
|
||||
function Base.count(rb::GitRebase)
|
||||
return ccall((:git_rebase_operation_entrycount, :libgit2), Csize_t, (Ptr{Void},), rb.ptr)
|
||||
end
|
||||
|
||||
function current(rb::GitRebase)
|
||||
return ccall((:git_rebase_operation_current, :libgit2), Csize_t, (Ptr{Void},), rb.ptr)
|
||||
end
|
||||
|
||||
function Base.getindex(rb::GitRebase, i::Integer)
|
||||
if !(1 <= i <= count(rb))
|
||||
throw(BoundsError(rb, (i,)))
|
||||
end
|
||||
rb_op_ptr = ccall((:git_rebase_operation_byindex, :libgit2),
|
||||
Ptr{RebaseOperation},
|
||||
(Ptr{Void}, Csize_t), rb.ptr, i-1)
|
||||
return unsafe_load(rb_op_ptr)
|
||||
end
|
||||
|
||||
function Base.next(rb::GitRebase)
|
||||
rb_op_ptr_ptr = Ref{Ptr{RebaseOperation}}(C_NULL)
|
||||
try
|
||||
@check ccall((:git_rebase_next, :libgit2), Cint,
|
||||
(Ptr{Ptr{RebaseOperation}}, Ptr{Void}),
|
||||
rb_op_ptr_ptr, rb.ptr)
|
||||
catch err
|
||||
err.code == Error.ITEROVER && return nothing
|
||||
rethrow(err)
|
||||
end
|
||||
return unsafe_load(rb_op_ptr_ptr[])
|
||||
end
|
||||
|
||||
function Base.show(io::IO, rb::GitRebase)
|
||||
println(io, "GitRebase:")
|
||||
println(io, "Number: ", count(rb))
|
||||
println(io, "Currently performing operation: ", current(rb)+1)
|
||||
end
|
||||
|
||||
"""
|
||||
LibGit2.commit(rb::GitRebase, sig::GitSignature)
|
||||
|
||||
Commits the current patch to the rebase `rb`, using `sig` as the committer. Is silent if
|
||||
the commit has already been applied.
|
||||
"""
|
||||
function commit(rb::GitRebase, sig::GitSignature)
|
||||
oid_ptr = Ref(GitHash())
|
||||
try
|
||||
@check ccall((:git_rebase_commit, :libgit2), Error.Code,
|
||||
(Ptr{GitHash}, Ptr{Void}, Ptr{SignatureStruct}, Ptr{SignatureStruct}, Ptr{UInt8}, Ptr{UInt8}),
|
||||
oid_ptr, rb.ptr, C_NULL, sig.ptr, C_NULL, C_NULL)
|
||||
catch err
|
||||
# TODO: return current HEAD instead
|
||||
err.code == Error.EAPPLIED && return nothing
|
||||
rethrow(err)
|
||||
end
|
||||
return oid_ptr[]
|
||||
end
|
||||
|
||||
function abort(rb::GitRebase)
|
||||
return ccall((:git_rebase_abort, :libgit2), Csize_t,
|
||||
(Ptr{Void},), rb.ptr)
|
||||
end
|
||||
|
||||
function finish(rb::GitRebase, sig::GitSignature)
|
||||
return ccall((:git_rebase_finish, :libgit2), Csize_t,
|
||||
(Ptr{Void}, Ptr{SignatureStruct}),
|
||||
rb.ptr, sig.ptr)
|
||||
end
|
||||
Reference in New Issue
Block a user