{"id":16602722,"url":"https://github.com/bbidulock/cvsps","last_synced_at":"2026-04-20T11:36:41.150Z","repository":{"id":73515472,"uuid":"104531364","full_name":"bbidulock/cvsps","owner":"bbidulock","description":"cvsps with hacks to help git-cvsimport","archived":false,"fork":false,"pushed_at":"2016-12-03T15:46:47.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-09T12:53:44.189Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"freedesktop/cvsps","license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bbidulock.png","metadata":{"files":{"readme":"README","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-23T01:08:31.000Z","updated_at":"2023-04-21T13:35:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"a88ef80b-1e7b-43d8-bcc9-f1622e8d4f5f","html_url":"https://github.com/bbidulock/cvsps","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/bbidulock/cvsps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbidulock%2Fcvsps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbidulock%2Fcvsps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbidulock%2Fcvsps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbidulock%2Fcvsps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbidulock","download_url":"https://codeload.github.com/bbidulock/cvsps/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbidulock%2Fcvsps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32045770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T00:23:31.906Z","updated_at":"2026-04-20T11:36:41.132Z","avatar_url":"https://github.com/bbidulock.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"CVSps (c) 2001,2002,2003 David Mansfield\n------------------------------\n\nOverview.\n--------\n\nCVSps is a program for generating 'patchset' information from a CVS\nrepository.  A patchset in this case is defined as a set of changes made\nto a collection of files, and all committed at the same time (using a\nsingle 'cvs commit' command).  This information is valuable to seeing the\nbig picture of the evolution of a cvs project.  While cvs tracks revision\ninformation, it is often difficult to see what changes were committed\n'atomically' to the repository.\n\nCompiling.\n---------\n\nCVSps is a relatively small program, with only a few modules.\nThe Makefile is very simple and should work in most GNU type environments.\nUnfortunately, I've only been able to test on Red Hat Linux, so YMMV.  As\nCVSps matures, I'm sure a more sophisticated build environment will evolve\nwith it.  For now, just try 'make' and 'make install'.  If you have any \nproblems let me know.\n\nRunning.\n-------\n\nNote: not all options are necessarily discussed here.  Please check the\noutput of 'cvsps -h' and/or the manual page for the most up-to-date info.\n\nCVSps operates by parsing the 'cvs log' output.  So to run it, you must\nbe in the working directory of a cvs project.  CVSps handles\nsubdirectories fine, so run it in the top directory of your project.\n\na) the ~/.cvsps/cvsps.cache file (or so it's called)\n\nBecause you may have a *lot* of revision history in your project, and/or\nyour connection to the cvs server may be slow or congested, CVSps uses a\ncache file for most operations.  The first time you run CVSps, just issue:\n\ncvsps\n\nand will begin reading and parsing the cvs log.  When it is finished it\nwill output all of the patchset information to stdout, and it will also\ngenerate the '~/.cvsps/cvsps.cache' file.  Note: for historical reasons\nthis file is still called the cvsps.cache file, but in reality it is named\nbased on the CVS/Root and CVS/Repository contents, and thus is shared for\nthe same repository checked out in multiple places.\n\nIf the cache file exists, it won't ever be automatically updated.  To\nupdate the cache with cvs activity that has occurred since the ~/.cvsps/cvsps.cache\nwas last updated, use:\n\ncvsps -u\n\nIf you question the integrity of the ~/.cvsps/cvsps.cache, or for some other reason\nwant to force a full cache rebuild, use (you could also 'rm' the cache file):\n\ncvsps -x\n\nb) Reading the output.\n\nCVSps's output is information about patchsets.  A patchset looks like:\n\n---------------------\nPatchSet 999\nDate: 2002/07/11 19:50:46\nAuthor: alan\nBranch: HEAD\nTag: (none)\nLog:\n[PATCH] Fix several pdc202xx problems\n\nMisnaming of 20270 as 20268R\nFailure of LBA48 on 20262\nIncorrect speed detection because the old driver used host not drive side\ncable detect\nPDC202xx handling for quirks in udma reporting off some drives\nLBA48 for PIO mode\n\nBKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ\n\nMembers:\n  ChangeSet:1.999-\u003e1.1000\n  MAINTAINERS:1.74-\u003e1.75\n  drivers/ide/ide-features.c:1.4-\u003e1.5\n  drivers/ide/ide-pci.c:1.18-\u003e1.19\n  drivers/ide/pdc202xx.c:1.11-\u003e1.12\n  include/linux/pci_ids.h:1.44-\u003e1.45\n\n---------------------\n\nThis patchset is taken from the linux kernel BK-\u003eCVS tree.  It shows the date, \nthe author, log message and each file that was modified.  For each file the\npre-commit and post-commit revisions are given.  You can also see (if \napplicable, not in this case) if the files are on a branch, as well as the\ntag (see TAGS below).\n\nPatchsets are ordered by commit timestamp, so as long as the clock on your\ncvs server is monotonic, the numbering of patchsets should be invariant\nacross cache-rebuilds. (see COMPATIBILITY below).\n\nc) Limiting the patchset output.\n\nThe default output of CVSps is to show all patchsets.  This can be\nfiltered in one of many ways.  These flags can be combined to really\nlimit the output to what you're interested in.\n\nBy id.  With the -s \u003cps range\u003e you can specify individual PatchSets by\nnumber or by range.  Ranges can be of the form '\u003cnumber\u003e', '\u003cnumber\u003e-',\n'-\u003cnumber\u003e' and of course '\u003cnumber\u003e-\u003cnumber\u003e'.  Multiple ranges can be\nspecified seperated by commas.  E.g.\n\ncvsps -s 999-1020,1025,4956-\n\nBy author.  With the -a \u003cauthor\u003e flag you limit the output to patchsets\ncommitted by a given author.  The author is usually the UNIX login id.\n\nBy file.  With the -f \u003cfile regex\u003e flag you limit the output to patchsets \nthat have modified the given file.  Because a regular expression can have\nmany pieces 'or'ed together, you can specify many different files here,\nfor example (note also the use of the ^ character):\n\ncvsps -f '^net/ipv4|^net/core'\n\nBy date.  With one date specification, CVSps shows only patchsets newer\nthan the date given, and with two dates, it shows patchsets between the\ntwo dates.\n\n*NOTE ON DATE FORMAT*.  Because I'm lazy, only one date format is\ncurrently acceptable. 'YYYY/MM/DD HH:MM:SS'  where time is given as\nlocaltime, and HH is in 24 hour format.  NOTE ALSO that cvs tends to\ndisplay times as GMT, but parse dates as localtime, so when using the '-D'\nwith cvs you need to convert from GMT to localtime in your head.  CVSps is\nnot as fancy.  It treats all dates as if in localtime, and therefore you\ngive CVSps dates the same way it gives them to you.\n\nBy branch.  With the -b \u003cbranch\u003e flag you limit the output to patchsets\nthat have modified the history of the given branch.  Note, this \ndoesn't necessarily mean the commit itself was made on the branch, since\nthe files in question may have existed prior to the branch point, in which\ncase changes made to a given file before the branch point affect the file\nas it exists in the head of the branch.  If you want to restrict to the\nmain branch, use a branch of 'HEAD'.\n\nBy log comment.  With the -l \u003cregex\u003e flag you can limit the ouptut to\npatchsets with the commit message matching the regex.\n\nBy tag.  With the -r \u003ctag1\u003e -r \u003ctag2\u003e you can limit the patchsets to\ncommits after a given tag1 and, optionally, before tag2.\n\nd) viewing the changes made by a patchset.\n\nTo show the 'diff' output for a given patchset, use -g.\n\nIt will show you the diff of changes made by the selected commits.\nSome effort was made to ensure that the patches are valid, even in the \ncase of removing or creating files, a case in which 'cvs diff' fails.  \nThe patches generated are, generally speaking, applyable in the working\ndirectory with the '-p1' option to the patch command.\n\ne) what is timestamp fuzz factor (-z option)?\n\nThere's another annoying feature of cvs.  When you commit a large change,\nthe timestamp on the change is created per file committed.  For example:\nif you commit changes to 60 files on a slow server, taking, say, 60\nseconds, the 'commit time' as given in the log message for the first file\nwill differ from that of the last file by 60 seconds.\n\nThe fuzz factor attempts to workaround this by saying: commits by the same\nauthor, using the same log message, within \u003cfuzz\u003e seconds are considered\npart of the same patchset.  The default fuzz is 300 seconds (5 minutes).\n\nTAGS\n----\n\nPlease read the manual page.\n\nCOMPATIBILITY\n-------------\n\nOne of the main goals of cvsps was to make the patchset numbering stable across\nall time, as long as no funny-business is done to the repository files themselves.\n\nUnfortunately, as bugs have been fixed, the numbering has changed.  This is most\nregrettable, but unavoidable.\n\nAdditionally, in version 2.0, two changes have been made which will 'renumber'\nthe patch sets.  \n\n1) The false 'globbing' of two commits from nearly the exact same time, by the\nsame person, with the same log description but to different branches.  Now,\nthese will be reported as 2 patchsets instead of one.\n\n2) The creation of a large volume of patchsets for 'file xyz was originally added on\nbranch' log messages.  This occurs whenever a file is originally born on a branch,\nand is exacerbated by the fact that even when all of these files are created with\na single commit, the 'file xyz...' messages, which contains the actual file name,\nare different, causing a proliferation of these unwanted patchsets.  These patchsets\nare now silently eliminated from the output.\n\nReporting bugs / submitting patches.\n-----------------------------------\n\nAlthough the current version is perfect and bug free, you can still send\nbug reports, feature requests and patches to me at:\n\ncvsps@dm.cobite.com\n\nI will try to maintain CVSps and make releases regularly.  The most recent\nversion of CVSps will always be available at http://www.cobite.com/cvsps\n\nSpecial thanks to my employer Cobite and Robert Lippman, who've given me\ntime to develop this tool.\n\nKnown Problems (this will become the FAQ if anyone ever A any Q).\n----------------------------------------------------------------\n\n1) What is the '*** file xyz doesn't match strip_path abc' error?\n\nThis error occurs when one of the subdirectories of the directory you\nran CVSps in is checked out from a different repository.  CVSps tries\nto remove the repository path information from the filenames that it\ngets to give you working-directory local pathnames.  It does this \nat startup by parsing the CVS/Root and CVS/Repository files.  If \nthe contents of these two files is different for some subdirectory,\nall of the files in that subdirectory will be ignored. \n\nYou can always run CVSps in that subdirectory, and since it IS a \nseparate repository, that does make a little bit of sense.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbidulock%2Fcvsps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbidulock%2Fcvsps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbidulock%2Fcvsps/lists"}