IMHO none of those hacks would be necessary with a better design.

## Situation: huge database, irrelevant copies

My photos are on a number of hard drives, that happen to get mounted (on Linux) on various locations, sometimes in /media, sometimes through network shares (various paths there, too). Database always showed many irrelevant/unreachable copies corresponding to paths where the hard drive happened to be mounted one day.

## Hack fix

Due to these many copies that grew the database content a lot and make its content irrelevant, unusable, I totally gave up using the image library database at all: "darktable" on my machine is a script that runs the binary with "--library :memory:".

## Unsatisfactory fix

What saved darktable is that the database is mostly a cache for data in xmp files. I open directories in darktable, which imports photos each time. Running with "--library :memory:" fixed the mess, but lost all ability to browse anything other than what was just opened.

## Suggestion: the best of both worlds

Have "volume"-based library/ies, with a marker information at the root of the "darktable volume".

For people familiar with git, current situation in darktable is as if git design wrote all administrative files (.git) in one central ~/.config/git because "well, you can browse all your git-managed information in one place, and you better make sure that your actual files always appear in the same path, else you'll be up for some maintenance, see options/hacks 1,2,3...". Those who knew SubVersion remember this kind of mess.

Suggested situation looks like actual git design. Administrative files live in .git directory at *repository root*. With git you can access a git repository through whatever path it happens to be reachable, no constraints. It just works.

With suggested situation in darktable, when you access a photo collection on a removable drive, or a network share, etc, darktable would notice the volume (just like git notices the repository by looking for a .git directory) and not create duplicates because photos have already been identified as being of a known volume.

On the implementation side, it would mean:

(1) when creating a volume create a UUID, store it on the filesystem, e.g. in a .darktable directory (2) in library database store all paths as volume-UUID + filesystem path relative to the volume root. (3) Perhaps also store in the database the last path where each volume was reachable (that would be a new table).


What do you think?


-- Stéphane


Le 28/03/2021 à 06.07, August Schwerdfeger a écrit :
A third option (which does not involve any hand-hacking of the database) is to open the folders collection, right-click on the root folder containing all the misplaced images, and click "search filmroll...". This will bring up a dialog box in which you should select the new location of that same folder.

--
August Schwerdfeger
aug...@schwerdfeger.name <mailto:aug...@schwerdfeger.name>

On Sat, Mar 27, 2021 at 6:02 PM Jean-Luc CECCOLI <jean-luc.cecc...@wanadoo.fr <mailto:jean-luc.cecc...@wanadoo.fr>> wrote:

    > Message du 27/03/21 23:36
    > De : "Jean-Luc CECCOLI"
    > A : darktable-user@lists.darktable.org
    <mailto:darktable-user@lists.darktable.org>
    > Copie à :
    > Objet : re: [darktable-user] changing directory
    >
    > > Message du 27/03/21 17:49
    > > De : "Jan Minekus"
    > > A : darktable-user@lists.darktable.org
    <mailto:darktable-user@lists.darktable.org>
    > > Copie à :
    > > Objet : [darktable-user] changing directory
    > >
    > > Hello,
    > >
    > > The drive letter of my darktable folder has changed when I did
    a new
    > > install of my computer. All files have the same structure as
    before.
    > > How can I change this? I would like to keep all the changes I
    made and
    > > be able to go back to the original version of the files.
    > >
    > > In the darktablerc file I can change the entries containing
    the drive
    > > letter.
    > > Is there another way to do this?
    > > In the preferences is no entry containing the path.
    > >
    > > I'm using windows 10 home 64 bits and darktable 3.4.1.1
    > >
    > > --
    > > Kind regards,
    > > Jan Minekus
    > >
    > Hello,
    >
    > Better go to windows drive manager and modify the letter so it
    matches the previous one.
    >
    > Rgrds,
    >
    > J.-Luc

    Well, yes, of course, you can do that another way : directly
    within the db - this is why I did not suggest it before.
    1- First of all, backup your library.db file
    2- open original library.db with any sql editor.
    3- go to the sql console window
    4- type the two following lines :
    update film_rolls SET
    folder = replace( folder, 'new_unwnated_path_to_the_files',
    'old_expected_path_to_the_files');
    Be aware to replace the values between single quotes by the actual
    ones !
    5- execute the code

    But I still think acting directly on the drive letter is better
    and safer.

    Rgrds,

    J.-Luc
    ____________________________________________________________________________
    darktable user mailing list
    to unsubscribe send a mail to
    darktable-user+unsubscr...@lists.darktable.org
    <mailto:darktable-user%2bunsubscr...@lists.darktable.org>


____________________________________________________________________________ darktable user mailing list to unsubscribe send a mail to darktable-user+unsubscr...@lists.darktable.org

--
Stéphane Gourichon


____________________________________________________________________________
darktable user mailing list
to unsubscribe send a mail to darktable-user+unsubscr...@lists.darktable.org

Reply via email to