[llvm-dev] Local svn strategy for future LLVM release updates
Doug Vanesko (dvanesko) via llvm-dev
llvm-dev at lists.llvm.org
Sat Mar 17 08:13:15 PDT 2018
We are starting a local LLVM backend project (using svn) and are looking for a mechanism to periodically update to later LLVM releases.
Certainly, this seems like it would be a relatively common use case and I expected a google search would reveal several options. However, I didn’t really find anything. Perhaps I’m not looking for the right keywords, if so please help me out and point me to any relevant docs.
Could others share their experiences with maintaining local LLVM projects?
Without any further guidance, the path we will follow comprises of the following flow:
Create a local repo with trunk/llvm_60
Copy trunk/llvm_60 to trunk/myproj60
Make project changes on trunk/myproj60
When LLVM 7.0 is released, create trunk/llvm_70 and copy this to trunk/myproj70
Diff trunk/llvm_60 with trunk/myproj60, identify and fix any conflicts, and apply resulting patch to trunk/myproj70
Continue project development on trunk/myproj70
I’m pretty sure this will work, what I don’t like about it is that every 6 months we are rebasing our tree. Assuming a successful project, over the years we will have many rebased trees and finding a particular change/check-in will require knowledge of which base a change was made. I don’t know of any good alternatives.
thanks
Doug
For completeness, I’ve included specific svn commands for starting with a LLVM 6.0 release and later upgrading to LLVM 7.0 below.
svnadmin create repos
svn mkdir file://`pwd`/repos/llvm<file:///%60pwd%60/repos/llvm>
svn mkdir file://`pwd`/repos/llvm/trunk<file:///%60pwd%60/repos/llvm/trunk>
svn mkdir file://`pwd`/repos/llvm/branches<file:///%60pwd%60/repos/llvm/branches>
svn export http://llvm.org/svn/llvm-project/llvm/branches/release_60llvm_60
svn import llvm_60 file://`pwd`/repos/llvm/trunk/llvm_60<file:///%60pwd%60/repos/llvm/trunk/llvm_60>
svn copy trunk/llvm_60 file://`pwd`/repos/llvm/trunk/myproj60<file:///%60pwd%60/repos/llvm/trunk/myproj60>
//Make project changes to trunk/myproj60.
//When next llvm release is available (say llvm 7.0)
svn diff file://`pwd`/repos/llvm/trunk/llvm_60<file:///%60pwd%60/repos/llvm/trunk/llvm_60> file://`pwd`/repos/llvm/trunk/myproj<file:///%60pwd%60/repos/llvm/trunk/myproj> > /tmp/diffs60.patch
// Identify and fixup any conflicts, repeat above until no conflicts
// Repeat same steps as above to make a trunk/llvm_70 and trunk/myproj70
svn co file://`pwd`/repos/llvm/trunk/llvm_70<file:///%60pwd%60/repos/llvm/trunk/llvm_70> wc70
cd wc70
svn patch /tmp/diffs60.patch
svn commit
// Start using trunk/myproj70 as project base
Sent from my iPhone
More information about the llvm-dev
mailing list