# Options for working with SVN repo?

**URL:** <https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174>\
**Category:** General Usage\
**Tags:** package\
**Created:** [May 27, 2018, 12:25am UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174 "2018-05-27T00:25:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Crghilardi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crghilardi/32/3738_2.png) [@Crghilardi](https://discourse.julialang.org/u/Crghilardi)\
**Post date:** [May 27, 2018, 12:25am UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174/1 "2018-05-27T00:25:00Z")

</div>

I have been working on a wrapper library for an established [project](https://sourceforge.net/p/open-fvs/code/HEAD/tree/) hosted on Sourceforge. I reached out to the maintainers and they said they would welcome a contribution, so now I am trying to decide the best course of action for housing the code.

I was originally going to make a new repo on my personal GitHub and treat it like another package, but after some thought I would prefer to just contribute to the existing structure rather than having to maintain something on my own.

The organization of the project to date has been to house tangential development work in folders under ~/branches, so I would get my own folder (something like ~/branches/ForestVegetationSimulator.jl). I have the code in the same format as a typical Julia package right now with everything in a `src` folder.

Is there a way I can set it up so that a user could add it with the package manager something like `Pkg.clone()`?

---

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [May 27, 2018, 5:12pm UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174/2 "2018-05-27T17:12:18Z")

</div>

I don’t think there’s any way to allow an SVN repo to be used with `Pkg.clone` unless the server hosting that repo also provides a `git` interface. It looks like Sourceforge doesn’t offer that: [SourceForge Support / Site Support / #12013 SVN, GIT synchronisation](https://sourceforge.net/p/forge/site-support/12013/)

Here’s one way you could handle the situation:

1. Create a new Julia package ForestVegetationSimulator.jl
2. In your package’s `deps/build.jl` file, download and build the `open-fvs` fortran code ([BinDeps.jl](https://github.com/JuliaLang/BinDeps.jl) or [BinaryBuilder.jl](https://github.com/JuliaPackaging/BinaryBuilder.jl) will help)

Unfortunately, there’s another problem: I can’t find any licensing information anywhere on the `open-fvs` page, so it may not be legal for you to…well…do anything at all with it. I am not a lawyer and can’t give legal advice, but some caution may be in order.

So I guess step 0 is: clarify what the license for the `open-fvs` package is, and proceed accordingly.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [May 27, 2018, 6:12pm UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174/3 "2018-05-27T18:12:34Z")

</div>

Should be possible with the new package manager since it doesn’t care about git history at all. However this will very much be swimming upstream so you’ll be breaking new ground.

---

<div class="post-metadata">

**Author:** ![Crghilardi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crghilardi/32/3738_2.png) [@Crghilardi](https://discourse.julialang.org/u/Crghilardi)\
**Post date:** [May 27, 2018, 7:31pm UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174/4 "2018-05-27T19:31:40Z")

</div>

OK, I think that is what I was expecting based on my understanding. As an aside, the project is created/maintained by the US Forest Service. I am pretty sure the license thing has been brought up to them, but they don’t always move the quickest. I do know that there is no intention to change the project from the svn/sourceforge page to github.

After thinking on this some more, I remembered that I saw someone a while back was [running a GH mirror](https://github.com/tharen/open-fvs-mirror), so in theory I could contribute to the main sourceforge page, wait for the GH mirror to refresh and have a user Pkg.add from that?

I am not sure if I need/want to go to the BinDeps/Builder level yet. There is already a build process to make the exe and dlls based on MinGW and Cmake with documentation available on the sourceforge wiki.

What I have been using as my expectation while working on this is a user has already compiled the fortran code into the dll based on the wiki instructions. I have a load function so user could point to where they have the dll.

```julia
function fvsLoad(fvsProgram,basedir="~/bin")
    const fvs = joinpath(basedir, fvsProgram)
    global lib = Libdl.dlopen(fvs)
end

```

Then all my functions reference lib in a `ccall` such as

```julia
function fvsAddTrees(in_dbh,in_species,in_ht,in_cratio,
                          in_plot,in_tpa,ntrees,rtnCode)

    ccall(Libdl.dlsym(lib,:fvsaddtrees_), Void,(
    Ref{Float32}, #in_dbh ....

```

As an ugly workaround, couldn’t someone just copy/paste the folder into where they have the `Pkg.dir()`?

---

<div class="post-metadata">

**Author:** ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)\
**Post date:** [May 28, 2018, 6:33am UTC](https://discourse.julialang.org/t/options-for-working-with-svn-repo/11174/5 "2018-05-28T06:33:33Z")

</div>

A lot of those orgs have moved their fortran monoliths to git and github in the last couple of years, you could push them a little more. But at least its actually in revision control.

Can you just keep your julia wrapper on gihub and pull in the svn repo as a binary dependency? Seems a lot cleaner to me, its a scary world in that repo…
