[PC-BSD Dev] pcbsd system source idea and question
jpm820 at gmail.com
Thu Dec 19 00:12:21 PST 2013
Here is what I've been able to come up with now for a more simple version.
I've been testing and it works but it takes about 25 minutes to fetch all
I had to use something like this to make up for not being able to run to
instances of prog, args in startPorts to run two git commands on after
system("git --git-dir=/usr/ports/.git fetch" );
Otherwise they would run at the same time which would be bad. I'm not sure
of a better way to do it at this point but my gut tells me using system()
might not be a great idea.
I haven't commited this yet as it's really slow and I figured I would see
what your thoughts were first.
On Wed, Dec 18, 2013 at 11:52 AM, Kris Moore <kris at pcbsd.org> wrote:
> On 12/14/2013 12:56, Joe Maloney wrote:
> Ok since this is going to take me a while here is what I have so far.
> When I first started this I ran into the limitation with git that it
> can’t clone into a dir like /usr/ports/ which has an existing dir like
> /usr/ports/distfiles. Which also is a dataset. Otherwise this would have
> been easy by just using your example for fetchsource() and renaming the
> buttons in portsnapprogress.ui.
> The only way to fix this in git was to change some things in the global
> configuration for git so I didn’t think that would be a good idea. I
> didn’t think running git clone to a temp dir and moving it was a really
> clean way of doing it either. So I started with the idea that I would init
> a fresh repo in /usr/ports. Then add the pcbsd ports tree as an upstream
> repo. Then fetch the ports and merge them. This way if
> /usr/ports/.git/config existed with an upstream repo I could just fetch and
> merge only the updates and not have to re-clone the entire thing. I think
> this could work for fetchsource() also if you wanted to only grab the
> updates quickly each time.
> What I’m missing is the code to check /usr/ports/.git/config to check to
> see if the upstream repo has been added, add it, otherwise continue on to
> fetch ports. Then continue on to fetchports() mergeports(). Also I’ve
> ripped out some of the functions the fetch done stuff at the end of the
> script while I was testing.
> Although I’ve learned a few things so far I’m by no means an expert in
> qt. So I figured I would pass along what I’ve been able to figure out so
> far. I see that some similar things already with pcdm as far as parsing
> config files with qt so I suspect someone will know how to finish this. I
> just wasn’t sure how to implement that type of function for what I was
> trying to do here. I will continue researching it but if someone is able
> to finish this before I do or do it another way I will just learn from the
> Joe Maloney
> So, I'm a big fan of "simple" solutions :)
> Maybe what you do is this. Have 2 buttons, "Init ports tree" and "update
> ports tree"
> The init one will do a destructive clone of our ports tree into
> /usr/ports, removing and replacing whatever is already there. (That is what
> you would run the first time of course)
> Then if you detect we have /usr/ports/.git, enable the "update ports tree"
> button which just does a "git pull origin master".
> If the user is already manually checking out files into /usr/ports from
> elsewhere, then I would expect them to continue managing it from the CLI or
> other methods. This would be more for new users who want to get an initial
> checkout, update, or blow-away a bad ports tree they mangled.
> Kris Moore
> PC-BSD Software
> Dev mailing list
> Dev at lists.pcbsd.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Dev