[Geany-Devel] [Geany-devel] Separating session file lists from config (again)
Thomas Martitz
thomas.martitz at xxxxx
Mon Nov 18 10:29:33 UTC 2013
Am 18.11.2013 10:12, schrieb Lex Trotman:
>
>
>
> Reviving this old thread because the annual discussion naturally
> came up again this year.
>
>
> It must be the change of season that triggers it, and it wasn't even
> one of the usual suspects this time :-)
>
> Your proposal lists issues that are rather orthogonal to
> separating the session file list, thus I think these should be
> dealt with later. As a first step I would propose we split out the
> session file lists to separate files (normal session: in the same
> folder as geany.conf, for projects in the same folder as
> $project.geany). This should solve the problem checking project
> files in as well as enabling to sync geany.conf across machines
> without affecting opened files.
>
> If one made such a patch, would it be accepted? It should be
> relatively trivial, only complicated by backward compat code to
> read session informations from the old location.
>
>
> I think we got fairly close to an agreed solution on IRC, but I don't
> think there was an exact common understanding. Since the IRC
> discussion was fairly noisy (communication wise) I have tried to
> describe my best understanding of the most agreed with solution.
>
> Please note this is what I think the majority agreed with, its not
> necessarily any individuals solution.
>
> The basic idea is to separate the user session files list into a
> separate file. The discussion applied mostly to the projects, since
> only the OP who triggered the discussion is trying to store user
> config in a VCS. For the user config it is expected that simply
> having a session.conf file containing the session specific data (files
> list, open project at least) stored in the same directory as
> geany.conf is a suitable solution.
>
> Since there are lots of project config files, and they can be stored
> in ~/projects or in the project trees (or anywhere) and because
> existing projects are single files the solution is more complex. The
> majority agreed:
>
> 1. instead of being a single file, the project config becomes a
> directory like the user config
>
> 2. various names were suggested, but no clear winner emerged,
> suggestions included $project.geany, geany.$project and
> $project.conf.d. Objections included $project.geany is the existing
> name and may be confused or overwritten by an old version of geany and
> $project.conf.d is ugly. Making it a define was suggested, which is
> fine during development, but a permanent solution must be selected
> prior to merging the change.
>
> 3. initially that directory contains the config file (which is the
> existing project file without the session files list) and the session
> files list file. Retaining the $project.geany name for the config
> file or changing it to geany.conf to match the user config were
> suggested, no conclusion was reached. Similarly using
> $project.session.conf or just session.conf were suggested for the
> session file.
>
> 4. over time more data can be added to the project directory, possibly
> becoming pretty much the same as the user config directory.
>
> 5. the user is responsible for setting their .gitignore (or equivalent
> for other VCSes) to ignore the session file.
>
> I say again, this may not be anybodys exact solution, but its what I
> think was agreed by the majority. If you think I have misunderstood
> then shout, but don't complain just because its not your personal
> solution. I am posting this because I don't think we all had the
> same understanding of what we were agreeing.
That matches my understanding: For each Geany project a directory is
created that follows the $HOME/.config/geany layout, except that
geany.conf is replaced by $project.conf (but I agree it could be just
fixed at project.conf). Initially this is only for the specific issue at
hand: the session file list and the rest of $project.geany. The layout
would also allow plugins to store project-specific stuff plus
potentially allow projects to override some $user config (though this is
not something we have talked about yet).
>
> Now for the further discussions.
>
> Assuming the above to be correct I suggest:
>
> 1. Project and user session file formats should match to allow the
> same code to store both. The fact that the storing the current
> project in the project session file is not needed doesn't matter.
>
I agree.
> 2. For user config, keeping the same name for geany.conf is ok since a
> new geany can simply ignore session info in the geany.conf file if the
> session.conf is present. Accidently overwriting geany.conf with an
> old version won't damage anything but won't update session.conf.
>
> 3. For project config the new version should use names that don't
> match existing project file names since the new config is a directory
> and an old geany trying to read it would get very confused. An old
> geany may also overwrite the directory with a file if its the same
> name. Also I see no point in including the project name on the config
> and session files inside the project config directory, its just more
> filepath manipulation needed for no gain, use the fixed names
> project.conf and session.conf. The project config file should not be
> geany.conf as it is currently not the same format.
>
Old Geany couldn't read it since it's a directory, and I don't think you
can possibly overwrite a directory with a file, even accidentally. You'd
need to delete the directory first. But it may be confusing to the
users, indeed.
> 4. Although partly orthogonal to the current discussion, we should
> find any places in Geany where config is not stored on each change and
> fix them so the now separate config file does not need to be saved at
> quit. So only the session file needs saving on quit and we don't lose
> config changes when the desktop shuts Geany down abruptly (or the rare
> crash :-).
>
Right but this should be a separate step. Let's get this separate
session file up first.
> Personally I would be willing to accept the above solution despite my
> misgivings about the need to .gitignore the session file and previous
> attempts to work around that need.
>
Awesome.
More information about the Devel
mailing list