Hi Dimitar!
On 16/03/16 10:02, Stankov, Dimitar Georgiev (D.) wrote:
Q-1. Imagine the following:
- we have to mirror a software in Trove;
- it is published as tarballs only;
- all versions are there in form beautiful-software-0.1.tar.gz,
beautiful-software-0.2.tar.gz, ..., beautiful-software-8.3.tar.gz;
- the version we need right now is somewhere in between;
- preferred is to have all the history in beautiful-software.git,
instead of our version as initial snapshot.
The tricky (and boring) part of the work is to update the lorry file,
then commit, then push, then curl-->move-to-top, then wait Trove job,
then update the file, and so on (imagine 30+ times).
Right. The idea of Lorry has always been that it'd do this for you --
you'd just give it a regexp pattern and it'd import all tarballs in one
go. But nobody got round to implementing that yet.
I made a task to implement this, if somebody reading has time then feel
free to do it...
https://storyboard.baserock.org/#!/story/82
And here comes the SQOD - What happens if:
1. I make all subsequent changes to the lorry file and commit
locally in a form one commit per version, e.g., such a diff:
- "url":
"http://dnl.everything.sam/beautiful-software-2.4.tar.gz"
+ "url":
"http://dnl.everything.sam/beautiful-software-2.5.tar.gz"
2. Then push the branch once
3. Then curl-->move-to-top once
4. Then wait to see what happens
What happens during step-4?
Are we fetching each version or only the last?
(of course, I can try that but prefer not to dirtify our precious
when possible)
It would only fetch the last version.
In detail, when the lorry-controller-readconf.service on the Trove runs,
lorry-controller does a `git remote update origin` of its local clone of
the lorries.git repo, and then reads the latest version of the .lorry
files and deals with any changes. It doesn't go commit-by-commit through
the history.
Q-2: Is it a bad approach to create local git repository of the above
software, to host it somewhere in our nerwork and to create a git-lorry
file?
I did that once for a software hosted at inaccessible host. It can be
well automated and works but now we have to care about one more extra
repository.
Are there other troubles?
That's not a bad approach. That said, if this is an open source project,
could you create the repo on Github or some other public Git hosting
service? That way you don't have to care about hosting it, and others
can make use of it too.
In the case of a repo made from tarballs, maybe you could use it to
'shame' the upstream project into publishing their own version control
repo :-)
Q-3: (not much important) Is there a command to get latest N-number
of
fetch-jobs of a lorry?
E.g.,
(trove-1)# lotty-get-jobs "delta/coreutils" latest=3
http://trove-1:12765/1.0/job-html/1906912
http://trove-1:12765/1.0/job-html/1905543
http://trove-1:12765/1.0/job-html/1807291
There's no way of doing exactly that right now. As a side note, we
should really document the REST API of lorry-controller somewhere. And
write a commandline interface tool for it.
Sam
--
Sam Thursfield, Codethink Ltd.
Office telephone: +44 161 236 5575