Can conventional changelog entry have more than one feature/bugfix item? - conventional-commits

According to the conventional commits, only fix, feat or BREAKING CHANGE commits bumps version number. Following this specification, one may conclude that:
changelog version entry can't have "Features" (type feat) and "Bugfixes" (type fix) sections simultaneously;
changelog version entry can't have more than one item in the "Features" or "Bugfix" lists;
changelog version entry can't have more than one breaking change entry.
Are the above statements correct?
If all the above is true, then how is it possible to see conventional changelogs with version entries having multiple-item lists in both sections?

Related

HSQLDB properties that the documentation doesn't mention

In INFORMATION_SCHEMA.SYSTEM_PROPERTIES there are these 3 entries that I can't find anything on in the docs:
hsqldb.min_reuse
sql.compare_in_locale
textdb.lvs
Any pointers?
These are among the properties that can be used in the connection URL when a new HSQLDB database is created.
The textdb.lvs property is a legacy property from version 1.8 and has no effect in recent versions.
The sql.compare_in_locale=true property setting uses the language of the Java runtime Locale as the default collation.
The hsqldb.min_reuse setting can be used to specify the smallest row space that is recovered and reused immediately when the row is deleted from a CACHED table. This property can be used in conjunction with the Table Space feature. With a large value such as hsqldb.min_reuse=4096, the deleted spaces are not immediately reused but when they add up and a whole block becomes free, the block as a whole is reused.

Weird Taxonomy migration issue (1.6 to 1.7.2) in Orchard CMS

crosspost: https://orchard.codeplex.com/discussions/484033
I'm migrating from Orchard CMS 1.6 to 1.7.2. To give some background, I've hurdled a prior issue before migrating terms in taxonomies by updating the tables:
UPDATE Contrib_Taxonomies_TermPartRecord
SET Path = '/' + Path
WHERE Path NOT LIKE '/%'
UPDATE Contrib_Taxonomies_TermPartRecord
SET Path = '/'
WHERE Path IS NULL
So I've got some content types which have some taxonomies associated to them.
I can create new Content Items without associated taxonomy terms
(selecting nothing)
I can create new Content Items with some specific terms only (haven't seen a pattern in the terms)
I can't create/save/publish new Content Items associated to some specific terms (page just tries to load and it's like there's an infinite loop in the background)
Worst part is that no errors are thrown or logged, even in debug mode.
Anyone have any ideas or leads? Has anyone encountered similar behavior before?
Thanks!
This issue has already been raised here.
I think the Taxonomy module used in version 1.7.2 has an extra linkage between the Container (Taxonomy) and the Term but wasn't implemented properly during the migration of older versions.
The broken linkage caused an infinite loop (please refer to the hyperlink above) when publishing a content item containing the affected term (I didn't encounter any problem saving it, only when publishing).
The linkage can be fixed easily by running the SQL statement below against the database:
UPDATE
Common_CommonPartRecord
SET
Container_Id = Orchard_Taxonomies_TermPartRecord.TaxonomyId
FROM
Common_CommonPartRecord
INNER JOIN Orchard_Taxonomies_TermPartRecord ON
Common_CommonPartRecord.Id = Orchard_Taxonomies_TermPartRecord.Id
The SQL statement will take the TaxonomyId from the table Orchard_Taxonomies_TermPartRecord and fill it into *Container_id* of the table Common_CommonPartRecord
I managed to find a workaround for this issue, and in case anyone wants it, here is what I did:
List affected Taxonomy terms
Add new terms to replace affected ones
Map old terms to new ones (main table is
Orchard_Taxonomies_TermPartRecord, join with Title_TitlePartRecord
and Orchard_Framework_ContentItemRecord)
Update Orchard_Taxonomies_TermContentItem records (maps Content Items tagged with terms) to replace old terms with new
Delete old affected terms
Rename new terms to old affected ones
It's a tedious and meticulously delicate process, so I suggest you do it as a last resort. Took me around an hour.

Getting the exact edited data from SQL Server

I have two Tables:
Articles(artID, artContents, artPublishDate, artCategoryID, publisherID).
ArticleUpdated(upArtID, upArtContents, upArtEditedData, upArtPublishDate, upArtCategory, upArtOriginalArticleID, upPublisherID)
A user logging in to the application and update an article's
contents at (artContents) column. I want to know about:
Which Changes the user made to the article's contents?
I want to store both versions of the Article, Original version and Edited Version!
What should I do for doing above two task:
Any necessary changes into the tables?
The query for getting exact edited data of (artContents).
(The exact edited data means, that there may 5000 characters in the coloumns, the user may edit 200 characters in the middle or somewhere else in column's characters, I want exact those edited characters, before of edit and after of edit)
Note: I am using ASP.NET with C# for Developing
You are not going to be able to do the exact editing using SQL. You need an algorithm such as the Unix diff on files (which works on the line level). At the character level, the algorithm would be some variation of Levenshtein distance. If diff meets your needs, you could download it, write a stored-procedure to call it, and then use it in the database. This would be rather expensive.
The part of your question of maintaining the different versions is much easier. I would add two colmnns EffDate and EndDate onto each record. You can get the most recent version by looking for EndDate is NULL and find the version active at any given time. Merge is generally useful for maintaining such a table.
Basically this type for requirement needs custom logging.
The example what you have provided i.e. "The exact edited data means, that there may 5000 characters in the coloumns, the user may edit 200 characters in the middle or somewhere else in column's characters, I want exact those edited characters, before of edit and after of edit"
Can have a case that user updates particular words from different place from the text.
You can use http://nlog-project.org/ for logging, its a fast and robust tool that normally we use for doing .net logging.
Also you can take a look
http://www.codeproject.com/Articles/38756/Two-Simple-Approaches-to-WinForms-Dirty-Tracking
Asp.net Event for change tracking of entities
What would be the best way to implement change tracking on an object
Above urls will clear some air, on how to do it.
You would obviously need to track down and store every change.

What torch.exe compares in wixpdb files for files without version

I am creating patches for my installation using "purely wix" method.
When I check created msp file against base msi file using Orca some of the changed files are not selected for patching. For example I have a txt file in which all 0 are replaced with 1. Old and new file are the same size but in Orca their MsiFileHash entries are completely different. I checked another txt file which is selected for patching and only difference is that it's size has changed.
Is file size only rule of comparison when torch compares rows for unversioned files? I thought that torch compares database rows and if it finds some difference it selects that row for patching.
Could somebody post a link or explanation of the rules torch.exe applies when comparing database rows for both versioned and unversioned files. Thanks in advance.
This is the normal behavior. Patches include only files which have a different size or version. This is because File table has columns only for Size and Version, it doesn't contain hash or file content information.
So if you want to include a file in a MSP patch, you need to change its size or increase its version.

How would you implement a revision control system for your models in your prefered db paradigm?

I found out that RCS for models is an interesting problem to solve in the context of data persistence. They are several solution using the django ORM to achieve this django-reversion and AuditTrail each of which propose their own way to do it.
Here is the model (in django-model-like format) which I would like to have revisions :
class Page(Model):
title = CharField()
content = TextField()
tags = ManyToMany(Tag)
authors = ManyToMany(Author)
Each revision should be annotated with a date, a revision number, a comment and the user that did the modification.
How would you do it in you preferred db (Mongo, neo4j, CouchDb, GAE Datastore) ?
Please post only one example of RCS models per post.
I'm not asking for a complete code (maybe an explanation is enough?) but enough to see how this problem can be tackled in each db type.
First of all, if you are using CouchDB, do not use the _rev field.
Why? Old revisions are lost when a database is compacted.
Compaction rewrites the database file,
removing outdated document revisions
and deleted documents.
CouchDB wiki - Compaction page
There are a couple possible solutions:
Keep current and old revisions in the same database. Add an extra revision field to determine the difference between current and old revisions.
Store old revisions in a separate database. When a new revision is added to the "current" database, the old revision document can be deleted and inserted into the "revisions" database.
Which one is best? It depends on how your data is going to be accessed. If you can query the old revisions independently from the current revisions, then storing the document in 2 different databases will give you some performance benefits.
In CouchDB this is rather straightforward. Every item in the DB has a _id and a _rev. So you don't need a separate revision number. I would probably do this then. Assign every item a systemrev number. This number would be a link to another DB record containing the date, comment and user for that revision.
Examples:
item being tracked:
{
_id: "1231223klkj123",
_rev: "4-1231223klkj123",
systemRev: "192hjk8fhkj123",
foo: "bar",
fooarray: ["bar1", "bar2", bar3"]
}
And then create a separate revision record:
{
_id: "192hjk8fhkj123",
_rev: "2-192hjk8fhkj123",
user: "John",
comment: "What I did yesterday",
date: "1/1/2010",
tags: ["C# edits", "bug fixes"]
}
To me it seems pretty elegant....