darcs

Issue 2539 export, tags, and optimize reorder

Title export, tags, and optimize reorder
Priority Status unknown
Milestone Resolved in
Superseder Nosy List attila.lendvai
Assigned To
Topics Git

Created on 2017-07-21.13:52:51 by attila.lendvai, last changed 2020-06-22.05:49:11 by bf.

Messages
msg19493 (view) Author: attila.lendvai Date: 2017-07-21.13:52:48
1. the situation

i'm converting a darcs repo to git using `darcs convert export`. this repo 
has tags. tags are in a "random" position in the darcs log, i.e. their 
position depends on when i pulled them into my own repo.

the resulting git repo has some git tags, and some "comment commits" that 
just say in their message "TAG foo-bar".

now, AFAIU, `darcs convert export` generates its output based on the order 
of the patches in the darcs log, and only generates a tag in its output for 
a darcs tag when that tag is exactly at such a position in the darcs log 
where all of the tag's dependencies are before the tag in the log, and 
nothing else is; i.e. when the tag in the output would represent the same 
repo state as the darcs tag.

i tried to run a `darcs optimize reorder`, but it doesn't seem to move my 
tags.

i understand that this kind of ordering of the tags is not always possible, 
but it is often possible.


2. what i expect

either `darcs convert export` could pay attention to this, and try to 
reorder tags before the export to a position of a "minimal height" in the 
darcs log... or maybe `darcs optimize reorder` could do that, and people 
would be advised to run it before export.

3. versions

$ darcs --exact-version
darcs compiled on Oct 29 2016, at 06:09:56

Context:

[TAG 2.12.4
Guillaume Hoffmann <guillaumh@gmail.com>**20160914143914
 Ignore-this: fee5b93a45e3a175e63e6fdb837ec4dc
] 

Compiled with:

HTTP-4000.3.3
array-0.5.1.1
async-2.1.0
attoparsec-0.13.1.0
base-4.9.0.0
base16-bytestring-0.1.1.6
binary-0.8.3.0
bytestring-0.10.8.1
containers-0.5.7.1
cryptohash-0.11.9
data-ordlist-0.4.7.0
directory-1.2.6.2
fgl-5.5.3.0
filepath-1.4.1.0
graphviz-2999.18.1.2
hashable-1.2.4.0
haskeline-0.7.2.3
html-1.0.1.2
mmap-0.5.9
mtl-2.2.1
network-2.6.3.1
network-uri-2.6.1.0
old-time-1.1.0.3
parsec-3.1.11
process-1.4.2.0
random-1.1
regex-applicative-0.3.3
regex-compat-tdfa-0.95.1.4
sandi-0.4.0
tar-0.5.0.3
terminfo-0.4.0.2
text-1.2.2.1
time-1.6.0.1
transformers-0.5.2.0
transformers-compat-0.5.1.4
unix-2.7.2.0
unix-compat-0.4.2.0
utf8-string-1.0.1.1
vector-0.11.0.0
zip-archive-0.3.0.5
zlib-0.6.1.1

$ uname -a
Linux lelap 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2 (2017-06-12) x86_64 
GNU/Linux
msg19502 (view) Author: gh Date: 2017-07-31.02:33:34
This seems very related to http://bugs.darcs.net/issue2466 (`darcs
convert export` turns some Darcs tags into Git comments insead of tags).
msg22107 (view) Author: bf Date: 2020-06-22.05:49:08
Independent of the issues with convert export (which has lots of 
problems), I think something akin to a "deep" 'optimize reorder' 
command could be useful. Currently, 'optimize reorder' merely 
reorders patches so that the latest tag becomes clean (if possible, 
that is, without making any earlier clean tags unclean).

This is not completely trivial to design. As noted by the OP, in 
general not all tags can be made clean: if tags were recorded in 
different branches, then neither may depend on the other. So we need 
a metric to decide which one comes first (and thus can be made clean) 
and which one comes later (and therefore must remain unclean). What 
exactly do we want to minimize here?
History
Date User Action Args
2017-07-21 13:52:51attila.lendvaicreate
2017-07-31 02:33:36ghsettopic: + Git
messages: + msg19502
2020-06-22 05:49:11bfsetmessages: + msg22107