1. Moritz Venn
  2. PowerBuilder
  3. Monday, 12 February 2018 04:29 PM UTC
Since I felt like none of the other git related topics fit without me hijacking them, please excuse me starting another one...
 
I've been testing the git implementation in PowerBuilder 2017 R2 for internal use, but have come across a number of issues we hope to see resolved by the time we use it:
 
Pull is not working after IDE restart:
This one is a bit strange and possibly related to initialization problems.
After the project is loaded executing a pull is not possible unless a push is performed (Git client error: Generic error..).
At this point there are no new commits on the local checkout and the push either fails (new commits on remote results in "Git client error: Reference was not fast-forwardable..") or "succeeds" (no new commits on remote). Afterwards the pull works (mostly, see next point) fine.
 
Pull always starts a merge:
This error shows itself in two possible ways, let's start with the "no new commits" scenario.
If there are no changes upstream the local checkout will enter the merge state, but while the ui says everything is fine the repository enters an unfinished merge state between HEAD and HEAD. When a new changeset is committed, it will be associated with the merge potentially hiding that an actual change happened due to the way the development history is rearranged (visually an observer might expect a merge operation without major code changes when in fact this is a commit incorrectly marked as merge).
If there are changes upstream which could be fast forwarded the implementation forces a merge commit. This might be fine for a single developer mostly using this to preserve his change history, but in a multi-developer scenario, this will result in a large amount of unnecessary changes (expect at least one per day per developer) rearranging the history in unexpected ways which in a worst case scenario requires manual merges with an external tool to resolve the base and source commit.
 
This can both be worked around by executing the pull and then manually resetting the tree to HEAD^ (or HEAD for the unfinished merge), but you can expect people to forget this easily and this is nothing a novice version control user should be expected to know and/or do.
 
Only in case a merge is required one should appear in the commit history. While I personally would prefer to rebase local changes before committing, there is no immediate need for PowerBuilder to do this automatically.
Another minor grievance related to merging is the commit message which differs from upstream git default. It would be nice if it a variant of "Merge branch ''" instead of the static "remote pull commit" as it would be closer to the upstream message and stand out less.
 
How strange an apparent single developer development graph can look can be seen in multiple of the "AppeonTest" repositories on github, e.g. https://github.com/AppeonTest/pbexamples/network
 
The final minor issue thus far is that PowerBuilder appears to keep some file references active, meaning a "git gc" on a workspace opened in PowerBuilder might fail since pack files and the respective indexes can't be modified.
Since one can assume the next time git gc is run there is a new PowerBuilder instance running, the effect is minimal as long as external tools handle this correctly or this behavior should be fixed on their end.
This happens for regular as well as for "pull" commits. Changing to a git enabled workspace in an existing PowerBuilder instance shows similar behavior and changing to another workspace releases the resources.
 
Regards
 Moritz

Responses (1)
  1. Likes
  2. Latest
  3. Oldest
Loading...

Find Questions by Tag

.EXE .NET 6.0 .NET Assembly .NET Core 3.1 .NET Core Framework .NET DataStore .NET Std Framework 32-bit 64-bit ADO.NET AEM AI Algorithm Amazon AWS Android Apache API APK App Store App Store (Apple) Appeon Workspace Appeon Xcelerator Plug-in Architecture Array ASE Asynchronous Methods Authentication AutoBuild AutoCompiler Automated Testing Automation AutoScript Azure Barcode Base64 Batch BigData BLOB Branch & Merge Browser Bug Build Button C# C# Class Importer C# Editor C# Model generator Calendar Camera Certificate Chrome Citrix Class Client Client/Server Cloud Cluster Collection COM Command Line Compiler Compression Computed Field Configuration Controls Cookies Cordova Crash Cross-Platform Crosstab CSharpAssembly CSharpObject CSS CSV Cursor Data Database Database Driver Database Painter Database Profile Database Provider DataObject DataSource DataStore DataStore (C#) DataStore (PS) DataType DataWindow DATE DATETIME DB2 Debug Debugger Debugging Deployment Design DLL DO-WHILE Dockable Docker Documentation DOUBLE Download DragDrop Edge Edit Style Editor Elevate Conference Email Embedded SQL Emulator Encoding Encryption Enhancement Request Entity Entity Framework ERP Error Event Event Handler Event Handling Excel Exception Export Expression External Functions F# Field File File Access Filter Firefox Firewall Font FOR-NEXT Foreground Format Function Garbage Collection GeoLocation Git Graph HANA Hash Header HTML/5 HTTP/S HTTPClient Icon IDE Identity IIS IMAPI Import InfoMaker Inheritance Installation Integer IntelliSense Interface Internet Internet Explorer iOS IPA iPad iPhone IWA J# Java JavaScript JBoss JDBC JOIN JSON JSONGenerator JSONParser Kestrel Label Lambda Large File LDAP Library License LINQ Linux OS Load Balancing Localization Localized PBVM Log In Log Out Logging LONG LONGLONG macOS MAPI Maps MDI Memory Memory Leak Menu Merge MessageBox Messagging Method Migration MIME TYPE Mobile Model ModelStore ModelStore (C#) MSOLEDBSQL Multi Threading MVC MySQL n-Tier Namespace NativePDF NVO OAuth ODATA ODBC Office Offline OLE OLEDB Online Open Source OpenAPI OpenSSL Oracle OrcaScript Other Outlook Output Package Parameter Patch PayPal PB Classic PB Native PB.NET PBC PBD PBDOM PBG PBJVM PBL PBNI PBORCA PBVM PBX PDF Performance Permission PFC Picture Pipeline Play Store (Google) Plugin Popup Port POST PostgreSQL PowerBuilder PowerBuilder (Appeon) PowerBuilder (SAP) PowerBuilder Compiler PowerBuilder Runtime PowerClient PowerScript (PS) PowerScript IDE PowerScript Migrator PowerServer PowerServer Mobile PowerServer Toolkit PowerServer Web PowerServerLabel Print Properties Proxy Publish PULL PUSH Query Regression Release Renew Resize Response REST Retrieve RibbonBar RibbonBar Builder Rich Text Roadmap RPC Runtime Packager SaaS Scaffolding Script SDI SDK Security Server Service Session Single Sign-on Size SMTP SMTPClient SnapDevelop SOAP Sort Source Code Speech Recognition SQL SQL Anywhere SQL Server SqlBuilder SqlExecutor SQLite SqlModelMapper Storage Stored Procedure Subscription SVN Swagger Syntax TabbedBar TabbedView Tablet TabPage Target TE Control Testing Text TFS Theme TIME Timer TLS/SSL Tomcat TortoiseGit TortoiseSVN Transaction Transparency Trial Trigger TRY-CATCH TX Control Type UI ULONG UltraLite Uninstall Unit Test Unit Testing UNIX OS Update Upgrade Upload URL User Center User Object UWP Validation VARCHAR Variable Versioning Visual Studio Visual Studio Code VM Voice Warning WCF Web API Web Extensions Web Service WebBrowser WebForms WebLogic WebSphere WildFly WinAPI Window Windows OS WinForms Wizard Workgroup Workspace WPF XCODE XHTML XML Zoom

Helpful?

If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.